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

sergeykamov pushed a commit to branch ver-0.8.0
in repository 
https://gitbox.apache.org/repos/asf/incubator-nlpcraft-java-client.git

commit 87289910895ceb526b82895ec1750813c13b1cd9
Author: Sergey Kamov <[email protected]>
AuthorDate: Tue May 18 12:21:21 2021 +0300

    WIP.
---
 pom.xml                                            |  2 +-
 .../java/org/apache/nlpcraft/client/NCClient.java  |  8 ++---
 .../java/org/apache/nlpcraft/client/NCCompany.java |  2 +-
 .../java/org/apache/nlpcraft/client/NCResult.java  |  3 ++
 .../java/org/apache/nlpcraft/client/NCUser.java    |  2 +-
 .../apache/nlpcraft/client/impl/NCClientImpl.java  | 34 ++++++++++++++-------
 .../nlpcraft/client/impl/beans/NCCompanyBean.java  |  4 +--
 .../client/impl/beans/NCRequestStateBean.java      | 15 ++++++++--
 .../nlpcraft/client/impl/beans/NCUserBean.java     |  4 +--
 .../org/apache/nlpcraft/client/NCAskSyncTest.java  |  3 +-
 .../java/org/apache/nlpcraft/client/NCAskTest.java |  3 +-
 .../nlpcraft/client/NCClearConversationTest.java   |  4 +--
 .../apache/nlpcraft/client/NCClearDialogTest.java  |  8 ++---
 .../org/apache/nlpcraft/client/NCCompanyTest.java  | 12 ++++----
 .../org/apache/nlpcraft/client/NCTestAdapter.java  | 35 ++++++++++++++--------
 .../org/apache/nlpcraft/client/NCUserTest.java     | 14 ++++-----
 .../nlpcraft/client/models/NCCommonSpecModel.java  | 31 ++++++++++++++++++-
 17 files changed, 123 insertions(+), 61 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2337b9c..7937092 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,7 @@
         <commons.validator.ver>1.7</commons.validator.ver>
         <gson.ver>2.8.6</gson.ver>
         <log4j.ver>2.14.0</log4j.ver>
-        <nlpcraft.ver>0.7.5</nlpcraft.ver>
+        <nlpcraft.ver>0.8.0</nlpcraft.ver>
         <junit.ver>5.7.0</junit.ver>
         <maven.compiler.version>3.8.0</maven.compiler.version>
         <maven.shade.plugin.ver>3.2.4</maven.shade.plugin.ver>
diff --git a/src/main/java/org/apache/nlpcraft/client/NCClient.java 
b/src/main/java/org/apache/nlpcraft/client/NCClient.java
index 85d8552..3fbc0ca 100644
--- a/src/main/java/org/apache/nlpcraft/client/NCClient.java
+++ b/src/main/java/org/apache/nlpcraft/client/NCClient.java
@@ -220,7 +220,7 @@ public interface NCClient {
         String lastName,
         String avatarUrl,
         boolean isAdmin,
-        Map<String, String> properties,
+        Map<String, Object> properties,
         String extId
     ) throws NCClientException, IOException;
 
@@ -240,7 +240,7 @@ public interface NCClient {
         String firstName,
         String lastName,
         String avatarUrl,
-        Map<String, String> properties
+        Map<String, Object> properties
     ) throws NCClientException, IOException;
 
     /**
@@ -485,7 +485,7 @@ public interface NCClient {
         String adminFirstName,
         String adminLastName,
         String adminAvatarUrl,
-        Map<String, String> properties
+        Map<String, Object> properties
     ) throws NCClientException, IOException;
 
     /**
@@ -521,7 +521,7 @@ public interface NCClient {
         String city,
         String address,
         String postalCode,
-        Map<String, String> properties
+        Map<String, Object> properties
     ) throws NCClientException, IOException;
 
     /**
diff --git a/src/main/java/org/apache/nlpcraft/client/NCCompany.java 
b/src/main/java/org/apache/nlpcraft/client/NCCompany.java
index 93baac5..68be2d0 100644
--- a/src/main/java/org/apache/nlpcraft/client/NCCompany.java
+++ b/src/main/java/org/apache/nlpcraft/client/NCCompany.java
@@ -86,5 +86,5 @@ public interface NCCompany {
      *
      * @return Optional company properties (metadata).
      */
-    Map<String, String> getProperties();
+    Map<String, Object> getProperties();
 }
diff --git a/src/main/java/org/apache/nlpcraft/client/NCResult.java 
b/src/main/java/org/apache/nlpcraft/client/NCResult.java
index 802e890..e14a7da 100644
--- a/src/main/java/org/apache/nlpcraft/client/NCResult.java
+++ b/src/main/java/org/apache/nlpcraft/client/NCResult.java
@@ -112,4 +112,7 @@ public interface NCResult {
      * @return Optional processing log. Can be {@code null}.
      */
     String getLogHolder();
+
+    // TODO:
+    Map<String, Object> getResultMeta();
 }
diff --git a/src/main/java/org/apache/nlpcraft/client/NCUser.java 
b/src/main/java/org/apache/nlpcraft/client/NCUser.java
index 14989b1..6943bf1 100644
--- a/src/main/java/org/apache/nlpcraft/client/NCUser.java
+++ b/src/main/java/org/apache/nlpcraft/client/NCUser.java
@@ -80,5 +80,5 @@ public interface NCUser {
      *
      * @return Optional user properties (metadata).
      */
-    Map<String, String> getProperties();
+    Map<String, Object> getProperties();
 }
diff --git a/src/main/java/org/apache/nlpcraft/client/impl/NCClientImpl.java 
b/src/main/java/org/apache/nlpcraft/client/impl/NCClientImpl.java
index 1d7055b..a9bef16 100644
--- a/src/main/java/org/apache/nlpcraft/client/impl/NCClientImpl.java
+++ b/src/main/java/org/apache/nlpcraft/client/impl/NCClientImpl.java
@@ -22,6 +22,7 @@ import com.google.gson.GsonBuilder;
 import com.google.gson.JsonDeserializer;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.ResponseHandler;
@@ -80,32 +81,40 @@ import java.util.stream.Collectors;
 @SuppressWarnings("JavaDoc")
 public class NCClientImpl implements NCClient {
     private static final String STATUS_API_OK = "API_OK";
-    
+
+    private static final Type MAP_TYPE = new TypeToken<Map<String, 
Object>>(){}.getType();
+
+    private static final Gson gsonExt = new Gson();
     private static final Gson gson =
         new GsonBuilder().registerTypeAdapter(
             NCRequestStateBean.class,
             (JsonDeserializer<NCRequestStateBean>) (e, type, ctx) -> {
                 JsonObject o = e.getAsJsonObject();
                 NCRequestStateBean b = new NCRequestStateBean();
-    
+
                 b.setSrvReqId(o.get("srvReqId").getAsString());
                 b.setTxt(o.get("txt").getAsString());
                 b.setUsrId(o.get("usrId").getAsLong());
                 b.setMdlId(o.get("mdlId").getAsString());
                 b.setProbeId(convert(o, "probeId", JsonElement::getAsString));
-                b.setResType(convert(o, "resType", JsonElement::getAsString));
-                b.setResBody(
+                b.setResultType(convert(o, "resType", 
JsonElement::getAsString));
+                b.setResultBody(
                     convert(o, "resBody", (resBody) -> resBody == null ?
                         null :
                         resBody.isJsonObject() ?
                             resBody.getAsJsonObject().toString() :
                             resBody.getAsString())
                 );
+                b.setResultMeta(convert(o, "resMeta", e1 -> {
+                    Map<String, Object> m = gsonExt.fromJson(e1, MAP_TYPE);
+
+                    return m == null || m.isEmpty() ? null : m;
+                }));
                 b.setStatus(o.get("status").getAsString());
                 b.setErrorCode(convert(o, "errorCode", JsonElement::getAsInt));
                 b.setError(convert(o, "error", JsonElement::getAsString));
                 b.setLogHolder(convert(o, "logHolder", (logHolder) -> 
logHolder.getAsJsonObject().toString()));
-    
+
                 return b;
             }).create();
     
@@ -469,7 +478,7 @@ public class NCClientImpl implements NCClient {
         String lastName,
         String avatarUrl,
         boolean isAdmin,
-        Map<String, String> properties,
+        Map<String, Object> properties,
         String extId
     ) throws NCClientException, IOException {
         notNull(email, "email");
@@ -514,7 +523,7 @@ public class NCClientImpl implements NCClient {
     
     @Override
     public void updateUser(
-        long id, String firstName, String lastName, String avatarUrl, 
Map<String, String> properties
+        long id, String firstName, String lastName, String avatarUrl, 
Map<String, Object> properties
     ) throws NCClientException, IOException {
         notNull(firstName, "firstName");
         notNull(lastName, "lastName");
@@ -753,7 +762,12 @@ public class NCClientImpl implements NCClient {
 
                         @Override
                         public String getLogHolder() {
-                            return res.getLogHolderJson();
+                            return res.getLogJson();
+                        }
+
+                        @Override
+                        public Map<String, Object> getResultMeta() {
+                            return res.getMetadata();
                         }
                     };
 
@@ -882,7 +896,7 @@ public class NCClientImpl implements NCClient {
     @Override
     public NCNewCompany addCompany(String name, String website, String 
country, String region, String city,
         String address, String postalCode, String adminEmail, String 
adminPasswd, String adminFirstName,
-        String adminLastName, String adminAvatarUrl, Map<String, String> 
props) throws IOException, NCClientException {
+        String adminLastName, String adminAvatarUrl, Map<String, Object> 
props) throws IOException, NCClientException {
         notNull(name, "name");
         notNull(adminEmail, "adminEmail");
         notNull(adminPasswd, "adminPasswd");
@@ -934,7 +948,7 @@ public class NCClientImpl implements NCClient {
         String city,
         String address,
         String postalCode,
-        Map<String, String> props
+        Map<String, Object> props
     ) throws IOException, NCClientException {
         notNull(name, "name");
     
diff --git 
a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCCompanyBean.java 
b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCCompanyBean.java
index 9d3157e..9fdf5b6 100644
--- a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCCompanyBean.java
+++ b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCCompanyBean.java
@@ -34,7 +34,7 @@ public class NCCompanyBean extends NCStatusResponseBean 
implements NCCompany {
     @SerializedName("city") private String city;
     @SerializedName("address") private String address;
     @SerializedName("postalCode") private String postalCode;
-    @SerializedName("properties") private Map<String, String> properties;
+    @SerializedName("properties") private Map<String, Object> properties;
     
     @Override public long getId() {
         return id;
@@ -60,7 +60,7 @@ public class NCCompanyBean extends NCStatusResponseBean 
implements NCCompany {
     @Override public String getPostalCode() {
         return postalCode;
     }
-    @Override public Map<String, String> getProperties() {
+    @Override public Map<String, Object> getProperties() {
         return properties;
     }
 }
diff --git 
a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCRequestStateBean.java 
b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCRequestStateBean.java
index f50f9cf..ac03e65 100644
--- 
a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCRequestStateBean.java
+++ 
b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCRequestStateBean.java
@@ -19,6 +19,8 @@ package org.apache.nlpcraft.client.impl.beans;
 
 import org.apache.nlpcraft.client.NCResult;
 
+import java.util.Map;
+
 /**
  * REST bean.
  */
@@ -34,6 +36,7 @@ public class NCRequestStateBean implements NCResult {
     private Integer errorCode;
     private String error;
     private String logHolder;
+    private Map<String, Object> resMeta;
     
     @Override public String getServerRequestId() {
         return srvReqId;
@@ -68,7 +71,10 @@ public class NCRequestStateBean implements NCResult {
     @Override public String getLogHolder() {
         return logHolder;
     }
-    
+    @Override public Map<String, Object> getResultMeta() {
+        return resMeta;
+    }
+
     public void setSrvReqId(String srvReqId) {
         this.srvReqId = srvReqId;
     }
@@ -84,10 +90,10 @@ public class NCRequestStateBean implements NCResult {
     public void setProbeId(String probeId) {
         this.probeId = probeId;
     }
-    public void setResType(String resType) {
+    public void setResultType(String resType) {
         this.resType = resType;
     }
-    public void setResBody(String resBody) {
+    public void setResultBody(String resBody) {
         this.resBody = resBody;
     }
     public void setStatus(String status) {
@@ -102,4 +108,7 @@ public class NCRequestStateBean implements NCResult {
     public void setLogHolder(String logHolder) {
         this.logHolder = logHolder;
     }
+    public void setResultMeta(Map<String, Object> resMeta) {
+        this.resMeta = resMeta;
+    }
 }
diff --git 
a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCUserBean.java 
b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCUserBean.java
index 4f9b5df..769353f 100644
--- a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCUserBean.java
+++ b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCUserBean.java
@@ -33,7 +33,7 @@ public class NCUserBean extends NCStatusResponseBean 
implements NCUser {
     @SerializedName("lastName") private String lastName;
     @SerializedName("avatarUrl") private String avatarUrl;
     @SerializedName("isAdmin") private boolean isAdmin;
-    @SerializedName("properties") private Map<String, String> properties;
+    @SerializedName("properties") private Map<String, Object> properties;
     
     @Override public long getId() {
         return id;
@@ -56,7 +56,7 @@ public class NCUserBean extends NCStatusResponseBean 
implements NCUser {
     @Override public String getExternalId() {
     return usrExtId;
 }
-    @Override public Map<String, String> getProperties() {
+    @Override public Map<String, Object> getProperties() {
         return properties;
     }
 }
diff --git a/src/test/java/org/apache/nlpcraft/client/NCAskSyncTest.java 
b/src/test/java/org/apache/nlpcraft/client/NCAskSyncTest.java
index 8bef883..eb852ec 100644
--- a/src/test/java/org/apache/nlpcraft/client/NCAskSyncTest.java
+++ b/src/test/java/org/apache/nlpcraft/client/NCAskSyncTest.java
@@ -73,6 +73,7 @@ class NCAskSyncTest extends NCTestAdapter {
         // Only latin charset is supported.
         check("El tiempo en España", this::checkError);
 
-        check("test", this::checkOk);
+        check("test", res -> checkOk(res, null));
+        check("meta", res -> checkOk(res, NCCommonSpecModel.MAP));
     }
 }
diff --git a/src/test/java/org/apache/nlpcraft/client/NCAskTest.java 
b/src/test/java/org/apache/nlpcraft/client/NCAskTest.java
index 78e0d1a..8a97a5d 100644
--- a/src/test/java/org/apache/nlpcraft/client/NCAskTest.java
+++ b/src/test/java/org/apache/nlpcraft/client/NCAskTest.java
@@ -83,7 +83,8 @@ class NCAskTest extends NCTestAdapter {
      */
     @Test
     void test() throws Exception {
-        test0("test", this::checkOk);
+        test0("test", res -> checkOk(res, null));
+        test0("meta", res -> checkOk(res, NCCommonSpecModel.MAP));
         test0("El tiempo en España", this::checkError);
     }
 }
diff --git 
a/src/test/java/org/apache/nlpcraft/client/NCClearConversationTest.java 
b/src/test/java/org/apache/nlpcraft/client/NCClearConversationTest.java
index 7dc0e49..b29e6ae 100644
--- a/src/test/java/org/apache/nlpcraft/client/NCClearConversationTest.java
+++ b/src/test/java/org/apache/nlpcraft/client/NCClearConversationTest.java
@@ -46,10 +46,10 @@ class NCClearConversationTest extends NCTestAdapter {
         // missed 'test1'
         check("test2", this::checkError);
 
-        check("test1 test2", this::checkOk);
+        check("test1 test2", res -> checkOk(res, null));
 
         // 'test1' received from conversation.
-        check("test2", this::checkOk);
+        check("test2", res -> checkOk(res, null));
     }
 
     /**
diff --git a/src/test/java/org/apache/nlpcraft/client/NCClearDialogTest.java 
b/src/test/java/org/apache/nlpcraft/client/NCClearDialogTest.java
index ec8d55f..848d4ca 100644
--- a/src/test/java/org/apache/nlpcraft/client/NCClearDialogTest.java
+++ b/src/test/java/org/apache/nlpcraft/client/NCClearDialogTest.java
@@ -51,14 +51,14 @@ class NCClearDialogTest extends NCTestAdapter {
         check("test2", this::checkError);
 
         // `test1` is always ok.
-        check("test1", this::checkOk);
+        check("test1", res -> checkOk(res, null));
 
         // There is one `test1` before.
-        check("test2", this::checkOk);
+        check("test2", res -> checkOk(res, null));
 
         // `test1` is always ok.
-        check("test1", this::checkOk);
-        check("test1", this::checkOk);
+        check("test1", res -> checkOk(res, null));
+        check("test1", res -> checkOk(res, null));
 
         // There are too much `test1` before.
         check("test2", this::checkError);
diff --git a/src/test/java/org/apache/nlpcraft/client/NCCompanyTest.java 
b/src/test/java/org/apache/nlpcraft/client/NCCompanyTest.java
index 0225602..2cb91ec 100644
--- a/src/test/java/org/apache/nlpcraft/client/NCCompanyTest.java
+++ b/src/test/java/org/apache/nlpcraft/client/NCCompanyTest.java
@@ -50,7 +50,7 @@ class NCCompanyTest extends NCTestAdapter {
         String city,
         String address,
         String postalCode,
-        Map<String, String> props
+        Map<String, Object> props
     ) {
         assertEquals(comp.getName(), name);
         assertEquals(comp.getWebsite(), website);
@@ -69,7 +69,7 @@ class NCCompanyTest extends NCTestAdapter {
      * @param other
      * @throws Exception
      */
-    private void test0(String name, Map<String, String> props, String other) 
throws Exception {
+    private void test0(String name, Map<String, Object> props, String other) 
throws Exception {
         String adminEmail = "test@" + UUID.randomUUID() + ".com";
         String adminPwd = "test";
     
@@ -103,6 +103,8 @@ class NCCompanyTest extends NCTestAdapter {
             other = "new " + other;
 
             if (props != null) {
+                props = new HashMap<>(props);
+
                 props.put("new", "new");
             }
     
@@ -137,11 +139,7 @@ class NCCompanyTest extends NCTestAdapter {
      */
     @Test
     void test() throws Exception {
-        Map<String, String> props = new HashMap<>();
-
-        props.put("k1", "v1");
-
-        test0("company", props, "company");
+        test0("company", MAP, "company");
         test0("company", null, null);
     }
 }
diff --git a/src/test/java/org/apache/nlpcraft/client/NCTestAdapter.java 
b/src/test/java/org/apache/nlpcraft/client/NCTestAdapter.java
index b09cc71..933b4dc 100644
--- a/src/test/java/org/apache/nlpcraft/client/NCTestAdapter.java
+++ b/src/test/java/org/apache/nlpcraft/client/NCTestAdapter.java
@@ -24,14 +24,13 @@ import org.junit.jupiter.api.BeforeEach;
 
 import java.io.IOException;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.function.Predicate;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * REST client test adapter.
@@ -47,14 +46,11 @@ abstract class NCTestAdapter {
          */
         void run() throws Exception;
     }
-    
     /** */
     protected NCClient admCli;
-    
     /** */
     protected long admUsrId;
 
-    /** */
     private Class<? extends NCModel> mdlClass;
 
     /**
@@ -64,6 +60,20 @@ abstract class NCTestAdapter {
     Optional<Class<? extends NCModel>> getModelClass() {
         return Optional.empty();
     }
+
+    protected static Map<String, Object> MAP = new HashMap<>();
+
+    static {
+        MAP.put("k1", "v1");
+        MAP.put("k2", 2.2);
+
+        Map<String, Object> m = new HashMap<>();
+
+        m.put("k11", "v11");
+        m.put("k12", 2.22);
+
+        MAP.put("k3", m);
+    }
     
     /**
      *
@@ -172,28 +182,29 @@ abstract class NCTestAdapter {
     
         return opt.get();
     }
-    
+
     /**
      *
      * @param state
      */
-    protected void checkOk(NCResult state) {
+    protected void checkOk(NCResult state, Map<String, Object> meta) {
         System.out.printf(
             "Text: %s \ntype: %s\nresult: %s%n",
             state.getText(),
             state.getResultType(),
             state.getResultBody()
         );
-    
+
         if (state.getLogHolder() != null)
             System.out.printf("log:\n%s%n", state.getLogHolder());
-        
+
         assertNotNull(state.getResultBody(), "Error: " + 
state.getErrorMessage());
         assertNotNull(state.getResultType());
         assertNull(state.getErrorMessage());
         assertNull(state.getErrorCode());
+        assertEquals(meta, state.getResultMeta());
     }
-    
+
     /**
      *
      * @param state
diff --git a/src/test/java/org/apache/nlpcraft/client/NCUserTest.java 
b/src/test/java/org/apache/nlpcraft/client/NCUserTest.java
index 2fa8981..83cc442 100644
--- a/src/test/java/org/apache/nlpcraft/client/NCUserTest.java
+++ b/src/test/java/org/apache/nlpcraft/client/NCUserTest.java
@@ -58,7 +58,7 @@ class NCUserTest extends NCTestAdapter {
         String avatar,
         boolean isAdmin,
         String extId,
-        Map<String, String> props
+        Map<String, Object> props
     ) {
         assertEquals(u.getEmail(), email);
         assertEquals(u.getFirstName(), firstName);
@@ -99,13 +99,13 @@ class NCUserTest extends NCTestAdapter {
         
         admCli.resetUserPassword(usrId1, "pswd2");
         admCli.updateUserAdmin(usrId1, false);
-        admCli.updateUser(usrId1, "first2", "last2", "av2", null);
+        admCli.updateUser(usrId1, "first2", "last2", "av2", MAP);
     
         users = admCli.getAllUsers();
     
         user = get(users, (u) -> usrId1 == u.getId());
         
-        check(user, "[email protected]", "first2", "last2", "av2", false, null, 
null);
+        check(user, "[email protected]", "first2", "last2", "av2", false, null, 
MAP);
     
         admCli.deleteUser(usrId1, null);
     
@@ -113,20 +113,16 @@ class NCUserTest extends NCTestAdapter {
     
         assertFalse(getOpt(users, (u) -> usrId1 == u.getId()).isPresent());
 
-        Map<String, String> props = new HashMap<>();
-
-        props.put("k1", "v1");
-    
         long usrId2 =
             admCli.addUser(
-                "[email protected]", "pswd1", "first1", "last1", "av1", false, 
props, null
+                "[email protected]", "pswd1", "first1", "last1", "av1", false, 
MAP, null
             );
     
         users = admCli.getAllUsers();
     
         user = get(users, (u) -> usrId2 == u.getId());
     
-        check(user, "[email protected]", "first1", "last1", "av1", false, null, 
props);
+        check(user, "[email protected]", "first1", "last1", "av1", false, null, 
MAP);
     
         admCli.deleteUser(usrId2, null);
     
diff --git 
a/src/test/java/org/apache/nlpcraft/client/models/NCCommonSpecModel.java 
b/src/test/java/org/apache/nlpcraft/client/models/NCCommonSpecModel.java
index aaac1b3..7708a62 100644
--- a/src/test/java/org/apache/nlpcraft/client/models/NCCommonSpecModel.java
+++ b/src/test/java/org/apache/nlpcraft/client/models/NCCommonSpecModel.java
@@ -19,14 +19,33 @@ package org.apache.nlpcraft.client.models;
 
 import org.apache.nlpcraft.model.NCElement;
 import org.apache.nlpcraft.model.NCIntent;
+import org.apache.nlpcraft.model.NCResult;
 
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
 import java.util.Set;
 
 /**
  * Test model.
  */
 public class NCCommonSpecModel extends NCSpecModelAdapter {
+    public static Map<String, Object> MAP = new HashMap<>();
+
+    static {
+        MAP.put("k1", "v1");
+        MAP.put("k2", 2.2);
+
+        Map<String, Object> m = new HashMap<>();
+
+        m.put("k11", "v11");
+        m.put("k12", 2.22);
+
+        MAP.put("k3", m);
+    }
+
     public static final String MDL_ID = 
NCCommonSpecModel.class.getSimpleName();
 
     @Override
@@ -36,11 +55,21 @@ public class NCCommonSpecModel extends NCSpecModelAdapter {
 
     @Override
     public Set<NCElement> getElements() {
-        return Collections.singleton(mkElement("test"));
+        return new HashSet<>(Arrays.asList(mkElement("test"), 
mkElement("meta")));
     }
 
     @NCIntent("intent=intentId term~{tok_id() == 'test'}")
     public org.apache.nlpcraft.model.NCResult onTest() {
         return org.apache.nlpcraft.model.NCResult.text("OK");
     }
+
+    @NCIntent("intent=intentMetaId term~{tok_id() == 'meta'}")
+    public org.apache.nlpcraft.model.NCResult onTestMeta() {
+        NCResult res = NCResult.text("OK");
+
+        res.getMetadata().putAll(MAP);
+
+        return res;
+    }
+
 }

Reply via email to