aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/common/src/main/java/org/onap
diff options
context:
space:
mode:
authorhighstreetherbert <herbert.eiselt@highstreet-technologies.com>2020-07-13 19:05:55 +0200
committerhighstreetherbert <herbert.eiselt@highstreet-technologies.com>2020-07-15 10:40:35 +0200
commit7dfb26b3c3a35fe73684019fbcf68ab6c9cf091a (patch)
treed2b3fac81dcfabd5c463bc2071e1f477236e744c /sdnr/wt/common/src/main/java/org/onap
parent5dfcc4c815f930edb9fc9f5f94a9ef6d9791a709 (diff)
SDN-R common Elasticsearch 7.x support
Extend SDN-R common for Elasticsearch 7.x support Issue-ID: SDNC-1284 Signed-off-by: highstreetherbert <herbert.eiselt@highstreet-technologies.com> Change-Id: I4c4f66f73f8adbdf2a9ba4f77d1e2d274ce49892 Signed-off-by: highstreetherbert <herbert.eiselt@highstreet-technologies.com>
Diffstat (limited to 'sdnr/wt/common/src/main/java/org/onap')
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/HtAssert.java17
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/configuration/subtypes/Section.java41
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/DatabaseClient.java24
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/ExtRestClient.java57
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClient.java108
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClientException.java45
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/Portstatus.java45
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/config/HostInfo.java2
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/data/EsVersion.java5
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/BaseRequest.java2
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/ClusterSettingsRequest.java8
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/CreateIndexRequest.java3
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Delete7Request.java42
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Get7Request.java41
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/GetRequest.java12
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Index7Request.java50
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Search7Request.java46
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/SearchRequest.java14
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Update7Request.java40
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/UpdateByQuery7Request.java39
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/BaseResponse.java9
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/DeleteResponse.java2
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/SearchResponse.java16
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/UpdateResponse.java2
-rw-r--r--sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/http/BaseHTTPClient.java12
25 files changed, 584 insertions, 98 deletions
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/HtAssert.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/HtAssert.java
index 99a0aaa71..976213f6f 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/HtAssert.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/HtAssert.java
@@ -21,6 +21,8 @@
*/
package org.onap.ccsdk.features.sdnr.wt.common;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.Arrays;
/**
@@ -45,7 +47,7 @@ public class HtAssert {
};
- private static String whoCalledMe() {
+ public static String whoCalledMe() {
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
StackTraceElement caller = stackTraceElements[3];
String classname = caller.getClassName();
@@ -54,4 +56,17 @@ public class HtAssert {
return classname + "." + methodName + ":" + lineNumber;
}
+ public static String whoCalledMeAll() {
+ // StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
+ // StringBuilder line =new StringBuilder();
+ // for(StackTraceElement caller:stackTraceElements) {
+ // line.append(String.format("%s | %s:%d\n",caller.getClassName(),caller.getMethodName(),caller.getLineNumber()));
+ // }
+ // return line.toString();
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ new Throwable().printStackTrace(pw);
+ return sw.toString();
+ }
+
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/configuration/subtypes/Section.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/configuration/subtypes/Section.java
index 54ebd03ac..7fb58a165 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/configuration/subtypes/Section.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/configuration/subtypes/Section.java
@@ -25,29 +25,41 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
+import java.util.Objects;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.eclipse.jdt.annotation.NonNull;
import org.onap.ccsdk.features.sdnr.wt.common.configuration.exception.ConversionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- *
+ *
* @author Michael Dürre, Herbert Eiselt
*
* subset of configuration identified by its name
*/
public class Section {
+ //Interfaces
+ public interface EnvGetter {
+ String getenv(String substring);
+ }
+
// constants
private static final Logger LOG = LoggerFactory.getLogger(Section.class);
private static final String DELIMITER = "=";
private static final String COMMENTCHARS[] = {"#", ";"};
+ private static final String ENVVARIABLE = "${";
+ private static final String REGEXENVVARIABLE = "(\\$\\{[A-Z0-9_-]+\\})";
// end of constants
+ private final Pattern pattern;
+
+ // variables for test purpose
+ private static EnvGetter envGetter = (mkey) -> System.getenv(mkey);
- // variables
private final String name;
private final List<String> rawLines;
private final LinkedHashMap<String, SectionValue> values;
@@ -59,6 +71,7 @@ public class Section {
this.name = name;
this.rawLines = new ArrayList<>();
this.values = new LinkedHashMap<>();
+ this.pattern = Pattern.compile(REGEXENVVARIABLE);
}
//end of constructors
@@ -96,11 +109,9 @@ public class Section {
value = values.get(key).getValue();
}
//try to read env var
- if (value != null && value.contains("${")) {
+ if (value != null && value.contains(ENVVARIABLE)) {
LOG.debug("try to find env var(s) for {}", value);
- final String regex = "(\\$\\{[A-Z0-9_-]+\\})";
- final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(value);
String tmp = new String(value);
while (matcher.find() && matcher.groupCount() > 0) {
@@ -108,7 +119,8 @@ public class Section {
if (mkey != null) {
try {
LOG.debug("match found for v={} and env key={}", tmp, mkey);
- String env = System.getenv(mkey.substring(2, mkey.length() - 1));
+ //String env=System.getenv(mkey.substring(2,mkey.length()-1));
+ String env = envGetter.getenv(mkey.substring(2, mkey.length() - 1));
tmp = tmp.replace(mkey, env == null ? "" : env);
} catch (SecurityException e) {
LOG.warn("unable to read env {}: {}", value, e);
@@ -120,8 +132,6 @@ public class Section {
return value;
}
-
-
public void setProperty(String key, String value) {
boolean isuncommented = this.isCommentLine(key);
if (isuncommented) {
@@ -170,8 +180,6 @@ public class Section {
}
}
-
-
public String[] toLines() {
List<String> lines = new ArrayList<>();
if (!this.name.isEmpty()) {
@@ -242,6 +250,19 @@ public class Section {
public String toString() {
return "Section [name=" + name + ", rawLines=" + rawLines + ", values=" + values + "]";
}
+
+ // static methods
+ public static void setEnvGetter(@NonNull EnvGetter newEnvGetter) {
+ if (Objects.nonNull(newEnvGetter)) {
+ envGetter = newEnvGetter;
+ } else {
+ throw new IllegalArgumentException("Null not allowed here");
+ }
+ }
+
+ public static EnvGetter getEnvGetter() {
+ return envGetter;
+ }
// end of public methods
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/DatabaseClient.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/DatabaseClient.java
index 3a9c10514..fd7246605 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/DatabaseClient.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/DatabaseClient.java
@@ -101,6 +101,30 @@ public interface DatabaseClient {
public @Nullable String doWriteRaw(String indexName, String dataTypeName, @Nullable String esId, String json);
/**
+ * Write one object into Database
+ *
+ * @param indexName Name of index
+ * @param dataTypeName Name of datatype
+ * @param esId of object to be replaced or null for new entry.
+ * @param json String in JSON format.
+ * @param syncAfterRewrite trigger ES to sync after insert data
+ * @return esId String of the database object or null in case of write problems.
+ */
+ public @Nullable String doWriteRaw(String indexName, String dataTypeName, String esId, String json,
+ boolean syncAfterWrite);
+
+ /**
+ * Write one object into Database
+ *
+ * @param dataTypeName Name of datatype
+ * @param esId of object to be replaced or null for new entry.
+ * @param json String in JSON format.
+ * @param syncAfterRewrite trigger ES to sync after insert data
+ * @return esId String of the database object or null in case of write problems.
+ */
+ public @Nullable String doWriteRaw(String dataTypeName, String esId, String json, boolean syncAfterWrite);
+
+ /**
* Remove Object from database
*
* @param dataTypeName of object
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/ExtRestClient.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/ExtRestClient.java
index 9d5e9f648..836c0fae7 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/ExtRestClient.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/ExtRestClient.java
@@ -46,23 +46,30 @@ import org.elasticsearch.client.RestClientBuilder.HttpClientConfigCallback;
import org.json.JSONException;
import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo.Protocol;
+import org.onap.ccsdk.features.sdnr.wt.common.database.data.EsVersion;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.ClusterHealthRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.ClusterSettingsRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.CreateAliasRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.CreateIndexRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.Delete7Request;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteAliasRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteByQueryRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteIndexRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.Get7Request;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.GetIndexRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.GetInfoRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.GetRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.Index7Request;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.IndexRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.ListAliasesRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.ListIndicesRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.NodeStatsRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.RefreshIndexRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.Search7Request;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.SearchRequest;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.Update7Request;
+import org.onap.ccsdk.features.sdnr.wt.common.database.requests.UpdateByQuery7Request;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.UpdateByQueryRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.UpdateRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.ClusterHealthResponse;
@@ -84,6 +91,7 @@ import org.onap.ccsdk.features.sdnr.wt.common.database.responses.SearchResponse;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.UpdateByQueryResponse;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.UpdateResponse;
import org.onap.ccsdk.features.sdnr.wt.common.http.BaseHTTPClient;
+import org.osgi.framework.Version;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -186,15 +194,34 @@ public class ExtRestClient {
// }
private final RestClient client;
+ private final boolean isES7;
- protected ExtRestClient(HostInfo[] hosts) {
+ protected ExtRestClient(HostInfo[] hosts) throws Exception {
this(hosts, null, null, false);
}
- protected ExtRestClient(HostInfo[] hosts, String username, String password, boolean trustAll) {
+ protected ExtRestClient(HostInfo[] hosts, String username, String password, boolean trustAll) throws Exception {
this.client = RestClient.builder(get(hosts))
.setHttpClientConfigCallback(new BasicAuthHttpClientConfigCallback(username, password, trustAll))
.build();
+ EsVersion tmp = autoDetectVersion();
+ LOG.info("working with sdnrdb version {}", tmp.toString());
+ this.isES7 = tmp.isNewerOrEqualThan(new EsVersion(7, 0, 0));
+ }
+
+ /**
+ * @return
+ * @throws IOException
+ * @throws Exception
+ */
+ private EsVersion autoDetectVersion() throws IOException, Exception {
+ GetInfoResponse infoResponse = this.getInfo();
+ return infoResponse.getVersion();
+
+ }
+
+ public boolean isVersion7() {
+ return this.isES7;
}
public ClusterHealthResponse health(ClusterHealthRequest request)
@@ -207,7 +234,6 @@ public class ExtRestClient {
}
- //
public boolean indicesExists(GetIndexRequest request) throws IOException {
Response response = this.client.performRequest(request.getInner());
return response.getStatusLine().getStatusCode() == 200;
@@ -238,11 +264,17 @@ public class ExtRestClient {
}
public IndexResponse index(IndexRequest request) throws IOException {
+ if (this.isES7 && !(request instanceof Index7Request)) {
+ request = new Index7Request(request);
+ }
return new IndexResponse(this.client.performRequest(request.getInner()));
}
public DeleteResponse delete(DeleteRequest request) throws IOException {
Response response = null;
+ if (this.isES7 && !(request instanceof Delete7Request)) {
+ request = new Delete7Request(request);
+ }
try {
response = this.client.performRequest(request.getInner());
} catch (ResponseException e) {
@@ -274,6 +306,9 @@ public class ExtRestClient {
* @throws IOException of client
*/
public SearchResponse search(SearchRequest request, boolean ignoreParseException) throws IOException {
+ if (this.isES7 && !(request instanceof Search7Request)) {
+ request = new Search7Request(request);
+ }
if (ignoreParseException) {
try {
return new SearchResponse(this.client.performRequest(request.getInner()));
@@ -287,6 +322,9 @@ public class ExtRestClient {
}
public GetResponse get(GetRequest request) throws IOException {
+ if (this.isES7 && !(request instanceof Get7Request)) {
+ request = new Get7Request(request);
+ }
try {
return new GetResponse(this.client.performRequest(request.getInner()));
} catch (ResponseException e) {
@@ -295,11 +333,17 @@ public class ExtRestClient {
}
public UpdateByQueryResponse update(UpdateByQueryRequest request) throws IOException {
+ if (this.isES7 && !(request instanceof UpdateByQuery7Request)) {
+ request = new UpdateByQuery7Request(request);
+ }
return new UpdateByQueryResponse(this.client.performRequest(request.getInner()));
}
public UpdateResponse update(UpdateRequest request) throws IOException {
+ if (this.isES7 && !(request instanceof Update7Request)) {
+ request = new Update7Request(request);
+ }
return new UpdateResponse(this.client.performRequest(request.getInner()));
}
@@ -356,15 +400,16 @@ public class ExtRestClient {
return httphosts;
}
- public static ExtRestClient createInstance(HostInfo[] hosts) {
+ public static ExtRestClient createInstance(HostInfo[] hosts) throws Exception {
return new ExtRestClient(hosts);
}
- public static ExtRestClient createInstance(HostInfo[] hosts, String username, String password, boolean trustAll) {
+ public static ExtRestClient createInstance(HostInfo[] hosts, String username, String password, boolean trustAll)
+ throws Exception {
return new ExtRestClient(hosts, username, password, trustAll);
}
- public static ExtRestClient createInstance(String hostname, int port, Protocol protocol) {
+ public static ExtRestClient createInstance(String hostname, int port, Protocol protocol) throws Exception {
return createInstance(new HostInfo[] {new HostInfo(hostname, port, protocol)});
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClient.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClient.java
index e8d86a925..1ae9f1e6c 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClient.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClient.java
@@ -25,7 +25,6 @@ import java.io.IOException;
import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-
import org.json.JSONObject;
import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
@@ -35,7 +34,6 @@ import org.onap.ccsdk.features.sdnr.wt.common.database.requests.DeleteRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.GetIndexRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.GetRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.IndexRequest;
-import org.onap.ccsdk.features.sdnr.wt.common.database.requests.RefreshIndexRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.SearchRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.UpdateByQueryRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.requests.UpdateRequest;
@@ -43,7 +41,6 @@ import org.onap.ccsdk.features.sdnr.wt.common.database.responses.DeleteByQueryRe
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.DeleteResponse;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.GetResponse;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.IndexResponse;
-import org.onap.ccsdk.features.sdnr.wt.common.database.responses.RefreshIndexResponse;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.SearchResponse;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.UpdateByQueryResponse;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.UpdateResponse;
@@ -59,34 +56,69 @@ import org.slf4j.LoggerFactory;
public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, AutoCloseable {
private static final boolean REFRESH_AFTER_REWRITE_DEFAULT = true;
- private static final boolean TRUSTALL_DEFAULT = false;
+ public static final boolean TRUSTALL_DEFAULT = false;
+ private static final long TIMOUT_MS_DEFAULT = 30000;
+ private static final long READ_MAX_SIZE = 9999;
+ private final static long SLEEPTIMEMS = 5000;
private final Logger LOG = LoggerFactory.getLogger(HtDatabaseClient.class);
private boolean doRefreshAfterWrite;
- public HtDatabaseClient(HostInfo[] hosts) {
- this(hosts, REFRESH_AFTER_REWRITE_DEFAULT);
+ private HtDatabaseClient(HostInfo[] hosts, boolean refreshAfterWrite, String username, String password,
+ boolean trustAll) throws Exception {
+ super(hosts, username, password, trustAll);
+ this.doRefreshAfterWrite = refreshAfterWrite;
}
- public HtDatabaseClient(HostInfo[] hosts, boolean refreshAfterWrite) {
- this(hosts, refreshAfterWrite, null, null, TRUSTALL_DEFAULT);
+ /*----------------------------------
+ * static factory function
+ */
+
+ static public HtDatabaseClient getClient(HostInfo[] hosts) throws HtDatabaseClientException {
+ return getClient(hosts, REFRESH_AFTER_REWRITE_DEFAULT, null, null, TRUSTALL_DEFAULT, TIMOUT_MS_DEFAULT);
}
- public HtDatabaseClient(HostInfo[] hosts, String username, String password) {
- this(hosts, username, password, TRUSTALL_DEFAULT);
+ static public HtDatabaseClient getClient(HostInfo[] hosts, String username, String password)
+ throws HtDatabaseClientException {
+ return getClient(hosts, REFRESH_AFTER_REWRITE_DEFAULT, username, password, TRUSTALL_DEFAULT, TIMOUT_MS_DEFAULT);
}
- public HtDatabaseClient(HostInfo[] hosts, String username, String password, boolean trustAll) {
- this(hosts, REFRESH_AFTER_REWRITE_DEFAULT, username, password, trustAll);
+ static public HtDatabaseClient getClient(HostInfo[] hosts, String username, String password, boolean trustAll)
+ throws HtDatabaseClientException {
+ return getClient(hosts, REFRESH_AFTER_REWRITE_DEFAULT, username, password, trustAll, TIMOUT_MS_DEFAULT);
}
- public HtDatabaseClient(HostInfo[] hosts, boolean refreshAfterWrite, String username, String password,
- boolean trustAll) {
- super(hosts, username, password, trustAll);
- this.doRefreshAfterWrite = refreshAfterWrite;
+ static public HtDatabaseClient getClient(HostInfo[] hosts, String username, String password, boolean trustAll,
+ long timeoutms) throws HtDatabaseClientException {
+ return getClient(hosts, REFRESH_AFTER_REWRITE_DEFAULT, username, password, trustAll, TIMOUT_MS_DEFAULT);
}
+ static public HtDatabaseClient getClient(HostInfo[] hosts, boolean refreshAfterWrite, String username,
+ String password, boolean trustAll, long timeoutms) throws HtDatabaseClientException {
+ long waiting = 0;
+ HtDatabaseClient client = null;
+ Exception exceptionWas = null;
+
+ do {
+ try {
+ client = new HtDatabaseClient(hosts, refreshAfterWrite, username, password, trustAll);
+ exceptionWas = null;
+ } catch (Exception e) {
+ try {
+ Thread.sleep(SLEEPTIMEMS);
+ } catch (InterruptedException e1) {
+ Thread.currentThread().interrupt();
+ }
+ waiting += SLEEPTIMEMS;
+ exceptionWas = e;
+ }
+ } while (client == null && waiting < timeoutms);
+ if (client == null) {
+ throw new HtDatabaseClientException("Can not reach database server. Client not started.", exceptionWas);
+ }
+ return client;
+ }
/*----------------------------------
* Functions
@@ -133,7 +165,17 @@ public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, A
}
@Override
+ public String doWriteRaw(String dataTypeName, String esId, String json, boolean syncAfterWrite) {
+ return this.doWriteRaw(dataTypeName, dataTypeName, esId, json, syncAfterWrite);
+ }
+
+ @Override
public @Nullable String doWriteRaw(String indexName, String dataTypeName, @Nullable String esId, String json) {
+ return this.doWriteRaw(indexName, dataTypeName, esId, json, this.doRefreshAfterWrite);
+ }
+
+ @Override
+ public String doWriteRaw(String indexName, String dataTypeName, String esId, String json, boolean syncAfterWrite) {
IndexResponse response = null;
IndexRequest indexRequest = new IndexRequest(indexName, dataTypeName, esId, this.doRefreshAfterWrite);
@@ -148,24 +190,9 @@ public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, A
LOG.warn("Response null during write: {} {}", esId, json);
return null;
}
- // if(this.doRefreshAfterWrite) {
- // this.doRefresh(dataTypeName);
- // }
return response.getId();
}
- private void doRefresh(String dataTypeName) {
- try {
- RefreshIndexResponse response = this.refreshIndex(new RefreshIndexRequest(dataTypeName));
- if (!response.succeeded()) {
- LOG.warn("seems that index {} was not refreshed", dataTypeName);
- }
- } catch (IOException e) {
- LOG.warn("problem with refreshing index: {}", e);
- }
-
- }
-
@Override
public boolean doRemove(String dataTypeName, IsEsObject esId) {
return doRemove(dataTypeName, esId.getEsId());
@@ -181,9 +208,6 @@ public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, A
} catch (IOException e) {
LOG.warn("Problem deleting from db: {}", e.getMessage());
}
- // if(this.doRefreshAfterWrite) {
- // this.doRefresh(dataTypeName);
- // }
return response != null ? response.isDeleted() : false;
}
@@ -229,7 +253,6 @@ public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, A
long total = 0;
LOG.debug("NetworkIndex query and read: {}", dataTypeName);
-
SearchRequest searchRequest = new SearchRequest(alias, dataTypeName);
searchRequest.setQuery(queryBuilder);
SearchResponse response = null;
@@ -250,7 +273,8 @@ public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, A
@Override
public @Nonnull SearchResult<SearchHit> doReadAllJsonData(String dataTypeName, boolean ignoreException) {
- return doReadByQueryJsonData(dataTypeName, QueryBuilders.matchAllQuery(), ignoreException);
+ return doReadByQueryJsonData(dataTypeName, QueryBuilders.matchAllQuery().size(READ_MAX_SIZE).from(0),
+ ignoreException);
}
public @Nonnull SearchResult<SearchHit> doReadAllJsonData(String alias, String dataType, boolean ignoreException) {
@@ -277,11 +301,8 @@ public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, A
UpdateResponse response = this.update(request);
success = response.succeeded();
} catch (IOException e) {
- LOG.warn("Problem updating {} with id {} and data {}: {}", dataTypeName, esId, json, e);
+ LOG.warn("Problem updating {} with id {} and data {}: '{}'", dataTypeName, esId, json, e.getMessage());
}
- // if(this.doRefreshAfterWrite) {
- // this.doRefresh(dataTypeName);
- // }
return success ? esId : null;
}
@@ -296,9 +317,6 @@ public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, A
} catch (IOException e) {
LOG.warn("Problem updating items in {} with query {} and data {}: {}", dataTypeName, query, json, e);
}
- // if(this.doRefreshAfterWrite) {
- // this.doRefresh(dataTypeName);
- // }
return success;
}
@@ -315,11 +333,9 @@ public class HtDatabaseClient extends ExtRestClient implements DatabaseClient, A
} catch (IOException e) {
LOG.warn("Problem delete in {} with query {}:{} ", dataTypeName, query.toJSON(), e);
}
- // if(this.doRefreshAfterWrite) {
- // this.doRefresh(dataTypeName);
- // }
return del;
}
+
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClientException.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClientException.java
new file mode 100644
index 000000000..b1b3f7275
--- /dev/null
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/HtDatabaseClientException.java
@@ -0,0 +1,45 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.common.database;
+
+public class HtDatabaseClientException extends Exception {
+ // constants
+ private static final long serialVersionUID = 1L;
+ // end of constants
+
+ // variables
+ private Throwable rootCause;
+ // end of variables
+
+ // constructors
+ public HtDatabaseClientException(String message, Throwable rootCause) {
+ super(message, rootCause);
+ this.rootCause = rootCause;
+ }
+ // end of constructors
+
+ // getters and setters
+ public Throwable getRootCause() {
+ return rootCause;
+ }
+ // end of getters and setters
+}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/Portstatus.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/Portstatus.java
index 250842e57..475178b4c 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/Portstatus.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/Portstatus.java
@@ -1,25 +1,30 @@
/*
- * ============LICENSE_START========================================================================
- * ONAP : ccsdk feature sdnr wt
- * =================================================================================================
- * Copyright (C) Apache Camel project
- * =================================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- * ============LICENSE_END==========================================================================
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
*/
-
package org.onap.ccsdk.features.sdnr.wt.common.database;
import java.io.IOException;
-import java.net.Socket;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.nio.channels.SocketChannel;
+
import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
public class Portstatus {
@@ -37,16 +42,16 @@ public class Portstatus {
throw new IllegalArgumentException("Invalid start port: " + port);
}
- Socket ss = null;
+ SocketChannel channel = null;
+ SocketAddress socketAddress = new InetSocketAddress(dnsName, port);
try {
- ss = new Socket(dnsName, port);
- ss.setReuseAddress(true);
+ channel = SocketChannel.open(socketAddress);
return true;
} catch (IOException e) {
} finally {
- if (ss != null) {
+ if (channel != null) {
try {
- ss.close();
+ channel.close();
} catch (IOException e) {
/* should not be thrown */
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/config/HostInfo.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/config/HostInfo.java
index cb0454361..2dd05c574 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/config/HostInfo.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/config/HostInfo.java
@@ -96,7 +96,7 @@ public class HostInfo {
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(dbUrl);
if (!matcher.find() || matcher.groupCount() < 2) {
- throw new ParseException("url " + dbUrl + " not parseable", 0);
+ throw new ParseException("url '" + dbUrl + "' not parseable. Expected http://xyz", 0);
}
Protocol p = Protocol.getValueOf(matcher.group(1));
String host = matcher.group(2);
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/data/EsVersion.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/data/EsVersion.java
index 7d106dfec..1dd1c3d53 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/data/EsVersion.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/data/EsVersion.java
@@ -48,6 +48,11 @@ public class EsVersion {
this.revision = Integer.parseInt(hlp[2]);
}
+ @Override
+ public String toString() {
+ return String.format("%d.%d.%d", this.major, this.minor, this.revision);
+ }
+
/**
* @param major
* @param minor
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/BaseRequest.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/BaseRequest.java
index 028de75d2..5e4467e74 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/BaseRequest.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/BaseRequest.java
@@ -35,7 +35,7 @@ public abstract class BaseRequest {
private static final Logger LOG = LoggerFactory.getLogger(BaseRequest.class);
- public static final int DEFAULT_RETRIES = 1;
+ public static final int DEFAULT_RETRIES = 3;
protected final Request request;
private String query;
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/ClusterSettingsRequest.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/ClusterSettingsRequest.java
index 1379da5ad..a85227858 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/ClusterSettingsRequest.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/ClusterSettingsRequest.java
@@ -41,6 +41,7 @@ public class ClusterSettingsRequest extends BaseRequest {
this.persistent = new JSONObject();
this.data.put("persistent", this.persistent);
this.allowAutoCreateIndex(autoCreateIndex);
+
}
public ClusterSettingsRequest allowAutoCreateIndex(boolean allow) {
@@ -48,4 +49,11 @@ public class ClusterSettingsRequest extends BaseRequest {
this.setQuery(this.data);
return this;
}
+
+ public ClusterSettingsRequest maxCompilationsPerMinute(long executions) {
+ //this.persistent.put("script.max_compilations_per_minute" ,executions);
+ this.persistent.put("script.max_compilations_rate", String.format("%d/1m", executions));
+ this.setQuery(this.data);
+ return this;
+ }
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/CreateIndexRequest.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/CreateIndexRequest.java
index 076032b29..2d14f2dca 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/CreateIndexRequest.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/CreateIndexRequest.java
@@ -54,9 +54,10 @@ public class CreateIndexRequest extends BaseRequest {
return this;
}
- public void settings(JSONObject settings) {
+ public CreateIndexRequest settings(JSONObject settings) {
this.settings = settings;
this.setRequest();
+ return this;
}
public boolean hasMappings() {
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Delete7Request.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Delete7Request.java
new file mode 100644
index 000000000..923bb772a
--- /dev/null
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Delete7Request.java
@@ -0,0 +1,42 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.common.database.requests;
+
+/**
+ * @author Michael Dürre
+ *
+ */
+public class Delete7Request extends DeleteRequest {
+
+ public Delete7Request(String alias, String esId) {
+ super(alias, "_doc", esId);
+ }
+
+ public Delete7Request(String alias, String esId, boolean refresh) {
+ super(alias, "_doc", esId, refresh);
+ }
+
+ public Delete7Request(DeleteRequest request) {
+ this(request.getAlias(), request.getEsId(), request.doRefresh());
+ }
+
+}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Get7Request.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Get7Request.java
new file mode 100644
index 000000000..3996a6fe7
--- /dev/null
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Get7Request.java
@@ -0,0 +1,41 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.common.database.requests;
+
+/**
+ * @author Michael Dürre
+ *
+ */
+public class Get7Request extends GetRequest {
+
+ public Get7Request(String alias, String esId) {
+ super(alias, "_doc", esId);
+ }
+
+ /**
+ * @param request
+ */
+ public Get7Request(GetRequest request) {
+ this(request.getAlias(), request.getEsId());
+ }
+
+}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/GetRequest.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/GetRequest.java
index 6092d88b0..0ad74581b 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/GetRequest.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/GetRequest.java
@@ -25,10 +25,20 @@ import javax.annotation.Nonnull;
public class GetRequest extends BaseRequest {
+ private final String alias;
+ private final String esId;
+
public GetRequest(String alias, String dataType, @Nonnull String esId) {
super("GET", String.format("/%s/%s/%s", alias, dataType, BaseRequest.urlEncodeValue(esId)));
+ this.alias = alias;
+ this.esId = esId;
}
+ protected String getAlias() {
+ return this.alias;
+ }
-
+ protected String getEsId() {
+ return this.esId;
+ }
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Index7Request.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Index7Request.java
new file mode 100644
index 000000000..f399032d4
--- /dev/null
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Index7Request.java
@@ -0,0 +1,50 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.common.database.requests;
+
+/**
+ * @author Michael Dürre
+ *
+ */
+public class Index7Request extends IndexRequest {
+
+ public Index7Request(String alias) {
+ super(alias, "_doc");
+ }
+
+ public Index7Request(String alias, String esId) {
+ super(alias, "_doc", esId);
+ }
+
+ public Index7Request(String alias, String esId, boolean refresh) {
+ super(alias, "_doc", esId, refresh);
+ }
+
+ /**
+ * @param request
+ */
+ public Index7Request(IndexRequest request) {
+ this(request.getAlias(), request.getEsId(), request.doRefresh());
+ this.setQuery(request.getQuery());
+ }
+
+}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Search7Request.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Search7Request.java
new file mode 100644
index 000000000..9c4424fde
--- /dev/null
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Search7Request.java
@@ -0,0 +1,46 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.common.database.requests;
+
+/**
+ * @author Michael Dürre
+ *
+ */
+public class Search7Request extends SearchRequest {
+
+ /**
+ * @param alias
+ * @param dataType
+ */
+ public Search7Request(String alias) {
+ super(String.format("/%s/_search", alias));
+ }
+
+ /**
+ * @param request
+ */
+ public Search7Request(SearchRequest request) {
+ this(request.getAlias());
+ this.setQuery(request.getQuery());
+ }
+
+}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/SearchRequest.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/SearchRequest.java
index 113cb4e1e..f90889418 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/SearchRequest.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/SearchRequest.java
@@ -25,8 +25,16 @@ import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
public class SearchRequest extends BaseRequest {
+ private final String alias;
+
+ public SearchRequest(String uri) {
+ super("POST", uri);
+ this.alias = null;
+ }
+
public SearchRequest(String alias, String dataType) {
super("POST", String.format("/%s/%s/_search", alias, dataType));
+ this.alias = alias;
}
@Override
@@ -34,4 +42,10 @@ public class SearchRequest extends BaseRequest {
super.setQuery(query);
}
+ public String getAlias() {
+ return this.alias;
+ }
+
+
+
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Update7Request.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Update7Request.java
new file mode 100644
index 000000000..6cff93319
--- /dev/null
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/Update7Request.java
@@ -0,0 +1,40 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.common.database.requests;
+
+/**
+ * @author Michael Dürre
+ *
+ * https://github.com/elastic/elasticsearch/blob/7.1/rest-api-spec/src/main/resources/rest-api-spec/api/update.json
+ */
+public class Update7Request extends UpdateRequest {
+
+ public Update7Request(String alias, String esId, int retries, boolean refresh) {
+ super(String.format("/%s/_update/%s", alias, BaseRequest.urlEncodeValue(esId), retries), refresh);
+ }
+
+ public Update7Request(UpdateRequest request) {
+ this(request.getAlias(), request.getEsId(), request.getRetries(), request.doRefresh());
+ this.setQuery(request.getQuery());
+ }
+
+}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/UpdateByQuery7Request.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/UpdateByQuery7Request.java
new file mode 100644
index 000000000..14a45be6e
--- /dev/null
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/requests/UpdateByQuery7Request.java
@@ -0,0 +1,39 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP : ccsdk features
+ * ================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
+ * All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ *
+ */
+package org.onap.ccsdk.features.sdnr.wt.common.database.requests;
+
+/**
+ * @author Michael Dürre
+ *
+ */
+public class UpdateByQuery7Request extends UpdateByQueryRequest {
+
+ public UpdateByQuery7Request(String alias, boolean refresh) {
+ super(alias, "_doc", refresh);
+ }
+
+ public UpdateByQuery7Request(UpdateByQueryRequest request) {
+ this(request.getAlias(), request.doRefresh());
+ this.setQuery(request.getQuery());
+ }
+
+}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/BaseResponse.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/BaseResponse.java
index 2746be4a4..27916459f 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/BaseResponse.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/BaseResponse.java
@@ -32,6 +32,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BaseResponse {
+
private static final Logger LOG = LoggerFactory.getLogger(BaseResponse.class);
private final int responseCode;
@@ -45,14 +46,10 @@ public class BaseResponse {
}
public boolean isResponseSucceeded() {
- return this.responseCode < 300;
+ return this.responseCode < 300 && this.responseCode >= 200;
}
JSONObject getJson(Response response) {
- if (response == null) {
- LOG.warn("unable to parse response. response is null.");
- return null;
- }
try {
String sresponse = EntityUtils.toString(response.getEntity());
LOG.debug("parsing response={}", sresponse);
@@ -95,4 +92,6 @@ public class BaseResponse {
}
}
+
+
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/DeleteResponse.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/DeleteResponse.java
index f6202d009..46ef1b9f8 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/DeleteResponse.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/DeleteResponse.java
@@ -35,8 +35,6 @@ public class DeleteResponse extends BaseResponse {
JSONObject o = this.getJson(response);
if (o != null) {
this.isDeleted = "deleted".equals(o.getString("result"));
- } else {
- this.isDeleted = false;
}
} else {
this.isDeleted = false;
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/SearchResponse.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/SearchResponse.java
index 6a7ed0d06..88a14c6d1 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/SearchResponse.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/SearchResponse.java
@@ -45,7 +45,7 @@ public class SearchResponse extends BaseResponse {
private void handleResult(JSONObject result) {
if (result != null && this.isResponseSucceeded()) {
JSONObject hitsouter = result.getJSONObject("hits");
- this.total = hitsouter.getLong("total");
+ this.total = this.getTotalFromHits(hitsouter);
JSONArray a = hitsouter.getJSONArray("hits");
SearchHit[] hits = new SearchHit[a.length()];
for (int i = 0; i < a.length(); i++) {
@@ -84,4 +84,18 @@ public class SearchResponse extends BaseResponse {
}
return entries;
}
+
+ /**
+ * @param hits
+ * @return
+ */
+ private long getTotalFromHits(JSONObject hits) {
+ Object o = hits.get("total");
+ if (o instanceof Long || o instanceof Integer) {
+ return hits.getLong("total");
+ } else if (o instanceof JSONObject) {
+ return hits.getJSONObject("total").getLong("value");
+ }
+ return 0;
+ }
}
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/UpdateResponse.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/UpdateResponse.java
index 80cb24872..2c9fee675 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/UpdateResponse.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/database/responses/UpdateResponse.java
@@ -39,7 +39,7 @@ public class UpdateResponse extends BaseResponse {
super(response);
JSONObject o = this.getJson(response);
- this.result = o.getString("result");
+ this.result = o == null ? null : o.getString("result");
}
public boolean succeeded() {
diff --git a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/http/BaseHTTPClient.java b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/http/BaseHTTPClient.java
index fdba374c7..87a376538 100644
--- a/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/http/BaseHTTPClient.java
+++ b/sdnr/wt/common/src/main/java/org/onap/ccsdk/features/sdnr/wt/common/http/BaseHTTPClient.java
@@ -72,7 +72,7 @@ public class BaseHTTPClient {
private static final int DEFAULT_HTTP_TIMEOUT_MS = 30000; // in ms
private final boolean trustAll;
- private final String baseUrl;
+ private String baseUrl;
private int timeout = DEFAULT_HTTP_TIMEOUT_MS;
private SSLContext sc = null;
@@ -99,7 +99,15 @@ public class BaseHTTPClient {
}
}
- protected @Nonnull BaseHTTPResponse sendRequest(String uri, String method, String body, Map<String, String> headers)
+ public void setBaseUrl(String base) {
+ if (!base.endsWith("/")) {
+ base += "/";
+ }
+ this.baseUrl = base;
+ }
+
+ @Nonnull
+ protected BaseHTTPResponse sendRequest(String uri, String method, String body, Map<String, String> headers)
throws IOException {
return this.sendRequest(uri, method, body != null ? body.getBytes(CHARSET) : null, headers);
}