This is an automated email from the ASF dual-hosted git repository.
sergeykamov pushed a commit to branch NLPCRAFT-366
in repository
https://gitbox.apache.org/repos/asf/incubator-nlpcraft-java-client.git
The following commit(s) were added to refs/heads/NLPCRAFT-366 by this push:
new e830764 WIP.
e830764 is described below
commit e830764f3af15c52c1a03d42b04f1884d40164ce
Author: Sergey Kamov <[email protected]>
AuthorDate: Thu Aug 5 12:25:53 2021 +0300
WIP.
---
pom.xml | 7 +-
.../java/org/apache/nlpcraft/client/NCClient.java | 14 +--
.../apache/nlpcraft/client/NCClientBuilder.java | 22 +---
.../java/org/apache/nlpcraft/client/NCElement.java | 2 +-
.../java/org/apache/nlpcraft/client/NCValue.java | 5 +-
.../apache/nlpcraft/client/impl/NCClientImpl.java | 130 +--------------------
.../nlpcraft/client/impl/beans/NCElementBean.java | 10 +-
.../nlpcraft/client/impl/beans/NCValueBean.java | 8 ++
.../org/apache/nlpcraft/client/NCModelTest1.java | 43 ++++---
.../nlpcraft/client/models/NCRestSpecModel.java | 100 +++++++++++++++-
.../nlpcraft/client/models/NCSpecModelAdapter.java | 60 +---------
11 files changed, 148 insertions(+), 253 deletions(-)
diff --git a/pom.xml b/pom.xml
index 86320de..fec112e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -118,12 +118,7 @@
<groupId>org.apache.nlpcraft</groupId>
<artifactId>nlpcraft</artifactId>
<version>${nlpcraft.ver}</version>
- <exclusions>
- <exclusion>
- <groupId>edu.stanford.nlp</groupId>
- <artifactId>*</artifactId>
- </exclusion>
- </exclusions>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
diff --git a/src/main/java/org/apache/nlpcraft/client/NCClient.java
b/src/main/java/org/apache/nlpcraft/client/NCClient.java
index 91efd74..b0c514f 100644
--- a/src/main/java/org/apache/nlpcraft/client/NCClient.java
+++ b/src/main/java/org/apache/nlpcraft/client/NCClient.java
@@ -75,14 +75,6 @@ public interface NCClient {
String getClientUserPassword();
/**
- * Gets whether or not this client is configured with embedded probe.
- *
- * @return Whether or not this client is configured with embedded probe.
- * @see NCClientBuilder
- */
- boolean isClientEmbeddedMode();
-
- /**
* Gets whether or not this client is configured with cancel-on-exit logic.
*
* @return Whether or not this client is configured with cancel-on-exit
logic
@@ -555,13 +547,13 @@ public interface NCClient {
* @throws IOException Thrown in case of generic I/O errors.
* @see <a href="https://nlpcraft.apache.org/tools/syn_tool.html">Synonym
suggestion tool</a>.
*/
- NCSuggestionData suggestSynonyms(String mdlId, Double minScore) throws
NCClientException, IOException;
+ NCSuggestionData suggestSynonyms(String mdlId, Double minScore) throws
NCClientException, IOException;
// TODO:
- NCElementSynonymsData getSynonyms(String mdlId, String elmId) throws
NCClientException, IOException;
+ NCElementSynonymsData getSynonyms(String mdlId, String elmId) throws
NCClientException, IOException;
// TODO:
- NCModelInfo getModelInfo(String mdlId) throws NCClientException,
IOException;
+ NCModelInfo getModelInfo(String mdlId) throws NCClientException,
IOException;
/**
* Closes the client and signs out from the REST server. Any further calls
to this client will result in
diff --git a/src/main/java/org/apache/nlpcraft/client/NCClientBuilder.java
b/src/main/java/org/apache/nlpcraft/client/NCClientBuilder.java
index c0a238b..8c6d785 100644
--- a/src/main/java/org/apache/nlpcraft/client/NCClientBuilder.java
+++ b/src/main/java/org/apache/nlpcraft/client/NCClientBuilder.java
@@ -53,9 +53,7 @@ public class NCClientBuilder {
public static final String DFLT_PWD = "admin";
/** Default cancel on exit flag. */
public static final boolean DFLT_CANCEL_ON_EXIT = true;
- /** Default embedded probe mode. */
- public static final boolean DFLT_EMBEDDED_PROBE = false;
-
+
private final NCClientImpl impl = new NCClientImpl();
/**
@@ -119,21 +117,6 @@ public class NCClientBuilder {
}
/**
- * Sets embedded probe mode flag. If set to {@code true} the implementation
- * will expect that the embedded probe is running in the local JVM and
will receive
- * query result via local callbacks. See <code>NCEmbeddedProbe</code>
class for more details.
- *
- * @param embeddedMode Embedded probe mode.
- * @return Current client builder.
- * @see #DFLT_EMBEDDED_PROBE
- */
- public NCClientBuilder setEmbeddedProbe(boolean embeddedMode) {
- impl.setEmbeddedProbe(embeddedMode);
-
- return this;
- }
-
- /**
* Builds a client instance with configured settings.
*
* @return Newly created instance of {@link NCClient}.
@@ -161,9 +144,6 @@ public class NCClientBuilder {
if (impl.isCancelOnExit() == null)
impl.setCancelOnExit(DFLT_CANCEL_ON_EXIT);
- if (impl.isEmbeddedProbe() == null)
- impl.setEmbeddedProbe(DFLT_EMBEDDED_PROBE);
-
impl.initialize();
return impl;
diff --git a/src/main/java/org/apache/nlpcraft/client/NCElement.java
b/src/main/java/org/apache/nlpcraft/client/NCElement.java
index f470092..4c315bd 100644
--- a/src/main/java/org/apache/nlpcraft/client/NCElement.java
+++ b/src/main/java/org/apache/nlpcraft/client/NCElement.java
@@ -21,7 +21,7 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
-// TODO: same as model NCElement without getValueLoader....
+// TODO: like a model NCElement without getValueLoader
public interface NCElement {
String getId();
diff --git a/src/main/java/org/apache/nlpcraft/client/NCValue.java
b/src/main/java/org/apache/nlpcraft/client/NCValue.java
index 953ae25..e4ceebc 100644
--- a/src/main/java/org/apache/nlpcraft/client/NCValue.java
+++ b/src/main/java/org/apache/nlpcraft/client/NCValue.java
@@ -17,7 +17,10 @@
package org.apache.nlpcraft.client;
-// TODO: same as model NCValue without synonyms
+import java.util.List;
+
+// TODO: like model NCValue
public interface NCValue {
String getName();
+ List<String> getSynonyms();
}
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 027156b..9327c19 100644
--- a/src/main/java/org/apache/nlpcraft/client/impl/NCClientImpl.java
+++ b/src/main/java/org/apache/nlpcraft/client/impl/NCClientImpl.java
@@ -63,8 +63,6 @@ import
org.apache.nlpcraft.client.impl.beans.NCTokenCreationBean;
import org.apache.nlpcraft.client.impl.beans.NCUserAddBean;
import org.apache.nlpcraft.client.impl.beans.NCUserBean;
import org.apache.nlpcraft.client.impl.beans.NCUsersAllBean;
-import org.apache.nlpcraft.model.tools.embedded.NCEmbeddedProbe;
-import org.apache.nlpcraft.model.tools.embedded.NCEmbeddedResult;
import java.io.IOException;
import java.lang.reflect.Type;
@@ -73,8 +71,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@@ -131,15 +127,11 @@ public class NCClientImpl implements NCClient {
private String email;
private String pwd;
private Boolean cancelOnExit;
- private Boolean embeddedProbe;
-
+
private CloseableHttpClient httpCli;
private String acsTok;
private volatile boolean started = false;
- private final Map<String, NCEmbeddedResult> embeddedResMap = new
ConcurrentHashMap<>();
- private final Object mux = new Object();
-
private static<T> T convert(JsonObject o, String name,
Function<JsonElement, T> converter) {
JsonElement e = o.get(name);
@@ -157,11 +149,6 @@ public class NCClientImpl implements NCClient {
}
@Override
- public boolean isClientEmbeddedMode() {
- return embeddedProbe;
- }
-
- @Override
public boolean isClientCancelOnExit() {
return cancelOnExit;
}
@@ -220,22 +207,6 @@ public class NCClientImpl implements NCClient {
}
/**
- *
- * @param embeddedProbe
- */
- public void setEmbeddedProbe(Boolean embeddedProbe) {
- this.embeddedProbe = embeddedProbe;
- }
-
- /**
- *
- * @return
- */
- public Boolean isEmbeddedProbe() {
- return embeddedProbe;
- }
-
- /**
*
* @return
*/
@@ -294,18 +265,6 @@ public class NCClientImpl implements NCClient {
if (reqCfg == null)
reqCfg = RequestConfig.DEFAULT;
- if (embeddedProbe) {
- Consumer<NCEmbeddedResult> embeddedCb = (NCEmbeddedResult res) -> {
- embeddedResMap.put(res.getServerRequestId(), res);
-
- synchronized (mux) {
- mux.notifyAll();
- }
- };
-
- NCEmbeddedProbe.registerCallback(embeddedCb);
- }
-
acsTok = restSignin();
started = true;
@@ -704,93 +663,6 @@ public class NCClientImpl implements NCClient {
notNull(mdlId, "mdlId");
notNull(txt, "txt");
- if (embeddedProbe) {
- String srvReqId = ask(mdlId, txt, data, enableLog, usrId,
usrExtId);
- int timeout = reqCfg.getSocketTimeout();
- long maxTime = System.currentTimeMillis() + timeout;
-
- while (true) {
- NCEmbeddedResult res = embeddedResMap.get(srvReqId);
-
- if (res != null)
- return new NCResult() {
- @Override
- public String getServerRequestId() {
- return res.getServerRequestId();
- }
-
- @Override
- public String getText() {
- return res.getOriginalText();
- }
-
- @Override
- public long getUserId() {
- return res.getUserId();
- }
-
- @Override
- public String getModelId() {
- return res.getModelId();
- }
-
- @Override
- public String getProbeId() {
- return res.getProbeId();
- }
-
- @Override
- public boolean isReady() {
- return true;
- }
-
- @Override
- public String getResultType() {
- return res.getType();
- }
-
- @Override
- public String getResultBody() {
- return res.getBody();
- }
-
- @Override
- public Integer getErrorCode() {
- return res.getErrorCode() == 0 ? null :
res.getErrorCode();
- }
-
- @Override
- public String getErrorMessage() {
- return res.getErrorMessage();
- }
-
- @Override
- public String getLogHolder() {
- return res.getLogJson();
- }
-
- @Override
- public Map<String, Object> getResultMeta() {
- return res.getMetadata();
- }
- };
-
- long sleepTime = maxTime - System.currentTimeMillis();
-
- if (sleepTime <= 0)
- throw new NCClientException(String.format("Request
timeout: %d", timeout));
-
- synchronized (mux) {
- try {
- mux.wait(sleepTime);
- }
- catch (InterruptedException e) {
- throw new NCClientException("Result wait thread
interrupted.", e);
- }
- }
- }
- }
-
NCAskSyncBean b =
checkAndExtract(
post(
diff --git
a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCElementBean.java
b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCElementBean.java
index 00f2391..109b71c 100644
--- a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCElementBean.java
+++ b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCElementBean.java
@@ -37,8 +37,10 @@ public class NCElementBean implements NCElement {
@SerializedName("values") private List<NCValueBean> values;
@SerializedName("parentId") private String parentId;
@SerializedName("synonyms") private List<String> synonyms;
- @SerializedName("permutateSynonyms") private Optional<Boolean>
permutateSynonyms;
- @SerializedName("sparse") private Optional<Boolean> sparse;
+ // java.lang.Boolean but not boolean
+ @SerializedName("permutateSynonyms") private Boolean permutateSynonyms;
+ // java.lang.Boolean but not boolean
+ @SerializedName("sparse") private Boolean sparse;
@Override
public String getId() {
@@ -77,11 +79,11 @@ public class NCElementBean implements NCElement {
@Override
public Optional<Boolean> isPermutateSynonyms() {
- return permutateSynonyms != null ? permutateSynonyms: Optional.empty();
+ return Optional.ofNullable(permutateSynonyms);
}
@Override
public Optional<Boolean> isSparse() {
- return sparse != null ? sparse: Optional.empty();
+ return Optional.ofNullable(sparse);
}
}
diff --git
a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCValueBean.java
b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCValueBean.java
index 7eb7525..2d4880f 100644
--- a/src/main/java/org/apache/nlpcraft/client/impl/beans/NCValueBean.java
+++ b/src/main/java/org/apache/nlpcraft/client/impl/beans/NCValueBean.java
@@ -20,14 +20,22 @@ package org.apache.nlpcraft.client.impl.beans;
import com.google.gson.annotations.SerializedName;
import org.apache.nlpcraft.client.NCValue;
+import java.util.List;
+
/**
* REST bean.
*/
public class NCValueBean implements NCValue {
@SerializedName("name") private String name;
+ @SerializedName("synonyms") private List<String> synonyms;
@Override
public String getName() {
return name;
}
+
+ @Override
+ public List<String> getSynonyms() {
+ return synonyms;
+ }
}
diff --git a/src/test/java/org/apache/nlpcraft/client/NCModelTest1.java
b/src/test/java/org/apache/nlpcraft/client/NCModelTest1.java
index 0455c1d..3cc7e90 100644
--- a/src/test/java/org/apache/nlpcraft/client/NCModelTest1.java
+++ b/src/test/java/org/apache/nlpcraft/client/NCModelTest1.java
@@ -28,7 +28,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import static org.apache.nlpcraft.client.models.NCRestSpecModel.MDL_ID;
-import static org.apache.nlpcraft.client.models.NCRestSpecModel.VAL_ELEM_ID;
+import static org.apache.nlpcraft.client.models.NCRestSpecModel.VAL_ELEM_ID1;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -43,7 +43,7 @@ class NCModelTest1 extends NCTestAdapter {
@Test
void testElementSynonyms() throws Exception {
- NCElementSynonymsData data = admCli.getSynonyms(MDL_ID, VAL_ELEM_ID);
+ NCElementSynonymsData data = admCli.getSynonyms(MDL_ID, VAL_ELEM_ID1);
assertTrue(data.getSynonymsCnt() > 0);
assertTrue(data.getSynonymsExpCnt() > 0);
@@ -116,21 +116,20 @@ class NCModelTest1 extends NCTestAdapter {
elems2.stream().sorted(Comparator.comparing(org.apache.nlpcraft.client.NCElement::getId)).collect(Collectors.toList());
for (int i = 0; i < elemsCnt; i++) {
- org.apache.nlpcraft.model.NCElement e1 = elemList1.get(i);
- org.apache.nlpcraft.client.NCElement e2 = elemList2.get(i);
-
- assertEquals(e1.getId(), e2.getId());
- assertEquals(e1.getGroups(), e2.getGroups());
- assertEquals(e1.getMetadata(), e2.getMetadata());
- assertEquals(e1.getDescription(), e2.getDescription());
- assertEquals(e1.getParentId(), e2.getParentId());
- // TODO ?
- assertEquals(e1.getSynonyms(), e2.getSynonyms());
- assertEquals(e1.isPermutateSynonyms(), e2.isPermutateSynonyms());
- assertEquals(e1.isSparse(), e2.isSparse());
-
- List<org.apache.nlpcraft.model.NCValue> vals1 = e1.getValues();
- List<org.apache.nlpcraft.client.NCValue> vals2 = e2.getValues();
+ org.apache.nlpcraft.model.NCElement elemMdl = elemList1.get(i);
+ org.apache.nlpcraft.client.NCElement elemCli = elemList2.get(i);
+
+ assertEquals(elemMdl.getId(), elemCli.getId());
+ assertEquals(elemMdl.getGroups(), elemCli.getGroups());
+ assertEquals(elemMdl.getMetadata(), elemCli.getMetadata());
+ assertEquals(elemMdl.getDescription(), elemCli.getDescription());
+ assertEquals(elemMdl.getParentId(), elemCli.getParentId());
+ assertEquals(elemMdl.getSynonyms(), elemCli.getSynonyms());
+ assertEquals(elemMdl.isPermutateSynonyms(),
elemCli.isPermutateSynonyms());
+ assertEquals(elemMdl.isSparse(), elemCli.isSparse());
+
+ List<org.apache.nlpcraft.model.NCValue> vals1 =
elemMdl.getValues();
+ List<org.apache.nlpcraft.client.NCValue> vals2 =
elemCli.getValues();
int valsCnt1 = vals1 == null ? 0 : vals1.size();
int valsCnt2 = vals2 == null ? 0 : vals2.size();
@@ -140,13 +139,13 @@ class NCModelTest1 extends NCTestAdapter {
for (int j = 0; j < valsCnt1; j++) {
assert vals2 != null;
- org.apache.nlpcraft.model.NCValue v1 = vals1.get(i);
- org.apache.nlpcraft.client.NCValue v2 = vals2.get(i);
+ org.apache.nlpcraft.model.NCValue valMdl = vals1.get(i);
+ org.apache.nlpcraft.client.NCValue valCli = vals2.get(i);
- assertEquals(v1.getName(), v2.getName());
+ System.out.println("Checked value: " + valMdl.getName());
- // TODO ?
- //assertEquals(v1.getSynonyms(), v2.getSynonyms());
+ assertEquals(valMdl.getName(), valCli.getName());
+ assertEquals(valMdl.getSynonyms(), valCli.getSynonyms());
}
}
}
diff --git
a/src/test/java/org/apache/nlpcraft/client/models/NCRestSpecModel.java
b/src/test/java/org/apache/nlpcraft/client/models/NCRestSpecModel.java
index 71add6a..9ea41a9 100644
--- a/src/test/java/org/apache/nlpcraft/client/models/NCRestSpecModel.java
+++ b/src/test/java/org/apache/nlpcraft/client/models/NCRestSpecModel.java
@@ -17,16 +17,17 @@
package org.apache.nlpcraft.client.models;
-import org.apache.nlpcraft.model.NCCustomParser;
import org.apache.nlpcraft.model.NCElement;
import org.apache.nlpcraft.model.NCIntent;
import org.apache.nlpcraft.model.NCIntentSample;
+import org.apache.nlpcraft.model.NCValue;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
/**
@@ -34,7 +35,8 @@ import java.util.Set;
*/
public class NCRestSpecModel extends NCSpecModelAdapter {
public static final String MDL_ID = NCRestSpecModel.class.getSimpleName();
- public static final String VAL_ELEM_ID = "valTest";
+ public static final String VAL_ELEM_ID1 = "valTest1";
+ public static final String VAL_ELEM_ID2 = "valTest2";
private static Set<String> mkSet(String ... data) {
return new HashSet<>(Arrays.asList(data));
@@ -176,7 +178,7 @@ public class NCRestSpecModel extends NCSpecModelAdapter {
@Override
public Set<String> getAbstractTokens() {
- return mkSet(VAL_ELEM_ID);
+ return mkSet(VAL_ELEM_ID1);
}
@Override
@@ -224,7 +226,97 @@ public class NCRestSpecModel extends NCSpecModelAdapter {
vals.put("v1", List.of("v11", "v12"));
vals.put("v2", List.of("v21", "v22"));
- set.add(mkElement(VAL_ELEM_ID, List.of("vt1", "vt2"), vals));
+ set.add(
+ new NCElement() {
+ @Override
+ public String getId() {
+ return VAL_ELEM_ID1;
+ }
+
+ @Override
+ public Map<String, Object> getMetadata() {
+ Map<String, Object> m = new HashMap<>();
+
+ m.put("k1", 12.12);
+ m.put("k2", "word");
+
+ return m;
+ }
+
+ @Override
+ public String getDescription() {
+ return "Some description";
+ }
+
+ @Override
+ public List<NCValue> getValues() {
+ return List.of(
+ new NCValue() {
+ @Override
+ public String getName() {
+ return "name1";
+ }
+
+ @Override
+ public List<String> getSynonyms() {
+ return List.of("v11", "v12");
+ }
+ },
+ new NCValue() {
+ @Override
+ public String getName() {
+ return "name2";
+ }
+
+ @Override
+ public List<String> getSynonyms() {
+ return List.of("v21", "v22");
+ }
+ }
+ );
+ }
+
+ @Override
+ public List<String> getSynonyms() {
+ return List.of("vt1", "vt2");
+ }
+
+ @Override
+ public Optional<Boolean> isPermutateSynonyms() {
+ return Optional.empty();
+ }
+
+ @Override
+ public Optional<Boolean> isSparse() {
+ return Optional.of(true);
+ }
+ }
+ );
+
+ set.add(
+ new NCElement() {
+ @Override
+ public String getId() {
+ return VAL_ELEM_ID2;
+ }
+
+ @Override
+ public Optional<Boolean> isPermutateSynonyms() {
+ return Optional.of(true);
+ }
+
+ @Override
+ public Optional<Boolean> isSparse() {
+ return Optional.of(false);
+ }
+
+
+ @Override
+ public String getParentId() {
+ return "valTest1";
+ }
+ }
+ );
return set;
}
diff --git
a/src/test/java/org/apache/nlpcraft/client/models/NCSpecModelAdapter.java
b/src/test/java/org/apache/nlpcraft/client/models/NCSpecModelAdapter.java
index 67a8ff4..19c7c42 100644
--- a/src/test/java/org/apache/nlpcraft/client/models/NCSpecModelAdapter.java
+++ b/src/test/java/org/apache/nlpcraft/client/models/NCSpecModelAdapter.java
@@ -19,13 +19,10 @@ package org.apache.nlpcraft.client.models;
import org.apache.nlpcraft.model.NCElement;
import org.apache.nlpcraft.model.NCModel;
-import org.apache.nlpcraft.model.NCValue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
/**
* Test model adapter.
@@ -47,20 +44,6 @@ abstract class NCSpecModelAdapter implements NCModel {
* @param syns
* @return
*/
- private static List<String> mkSynonyms(String id, List<String> syns) {
- List<String> l = new ArrayList<>(syns);
-
- l.add(id);
-
- return l;
- }
-
- /**
- *
- * @param id
- * @param syns
- * @return
- */
protected NCElement mkElement(String id, String... syns) {
return new NCElement() {
@Override
@@ -70,46 +53,15 @@ abstract class NCSpecModelAdapter implements NCModel {
@Override
public List<String> getSynonyms() {
- return mkSynonyms(id, Arrays.asList(syns));
- }
- };
- }
+ List<String> l = new ArrayList<>();
- /**
- *
- * @param id
- * @param syns
- * @param vals
- * @return
- */
- protected NCElement mkElement(String id, List<String> syns, Map<String,
List<String>> vals) {
- return new NCElement() {
- @Override
- public String getId() {
- return id;
- }
+ if (syns.length != 0) {
+ l.addAll(Arrays.asList(syns));
+ }
- @Override
- public List<String> getSynonyms() {
- return mkSynonyms(id, syns);
- }
-
- @Override
- public List<NCValue> getValues() {
- return
- vals.entrySet().stream().map(p ->
- new NCValue() {
- @Override
- public String getName() {
- return p.getKey();
- }
+ l.add(id);
- @Override
- public List<String> getSynonyms() {
- return p.getValue();
- }
- }
- ).collect(Collectors.toList());
+ return l;
}
};
}