aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/data-provider/provider/src/main
diff options
context:
space:
mode:
authorDan Timoney <dtimoney@att.com>2021-01-29 12:46:06 -0500
committerDan Timoney <dtimoney@att.com>2021-01-29 12:47:35 -0500
commit4e69f3358d31173a222b275e2a82da692846aa1a (patch)
tree7355744a66614a0811113ee6a43a423e68257fe3 /sdnr/wt/data-provider/provider/src/main
parent123b423cddbe01bdaba0bea50d986ff1b18a25bc (diff)
Revert "update common and data-provider"
This reverts commit a3e70a1a48d13193d9f28a2d91089d5b253d3e91. Change was incomplete - many modules still reference version 2.1.0 (Sodium-based) of CCSDK parent poms, causing version conflicts in odlsli docker. Issue-ID: CCSDK-3076 Signed-off-by: Dan Timoney <dtimoney@att.com> Change-Id: I447371239a1bfe102b705e7ecbd964f368780657
Diffstat (limited to 'sdnr/wt/data-provider/provider/src/main')
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/ElasticSearchDataProvider.java36
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/acessor/DataObjectAcessorStatus.java12
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/rpctypehelper/QueryResult.java19
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/EsDataObjectReaderWriter2.java12
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java3
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java17
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java1
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java34
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/DateAndTimeBuilder.java15
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper.java205
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper2.java244
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapperHelper.java244
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/builder/DateAndTimeBuilder.java36
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsBuilderAnnotationIntrospector.java130
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsDeserializerModifier.java117
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsModule.java50
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/BaseIdentityDeserializer.java64
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/ClassDeserializer.java45
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/DateAndTimeSerializer.java51
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/EnumSerializer.java36
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/IdentifierDeserializer.java71
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/MapSerializer.java37
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/TypeObjectDeserializer.java87
-rw-r--r--sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/TypeObjectSerializer.java51
24 files changed, 511 insertions, 1106 deletions
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/ElasticSearchDataProvider.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/ElasticSearchDataProvider.java
index 0a966aef6..7a30542b4 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/ElasticSearchDataProvider.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/ElasticSearchDataProvider.java
@@ -47,7 +47,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.DeleteNetworkElementConnectionOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.EntityInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Guicutthrough;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MaintenanceEntity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MediatorServerEntity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.NetworkElementConnectionEntity;
@@ -56,7 +55,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadEventlogListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMediatorServerListOutputBuilder;
@@ -74,10 +72,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionOutputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Guicutthrough;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class ElasticSearchDataProvider {
+public class ElasticSearchDataProvider /*extends BaseStatusProvider /* implements IEntityDataProvider*/ {
private static final Logger LOG = LoggerFactory.getLogger(ElasticSearchDataProvider.class);
@@ -164,6 +165,9 @@ public class ElasticSearchDataProvider {
* Provide access to model API
*/
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultcurrent.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultcurrent.list.output.PaginationBuilder
+ //eventRWFaultCurrent
public ReadFaultcurrentListOutputBuilder readFaultCurrentList(EntityInput input) {
ReadFaultcurrentListOutputBuilder outputBuilder = new ReadFaultcurrentListOutputBuilder();
@@ -177,6 +181,9 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.PaginationBuilder
+ //eventRWFaultLog
public ReadFaultlogListOutputBuilder readFaultLogList(EntityInput input) {
ReadFaultlogListOutputBuilder outputBuilder = new ReadFaultlogListOutputBuilder();
QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.faultlog.list.output.Data> result =
@@ -188,6 +195,9 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.PaginationBuilder
+ //maintenanceRW
public ReadMaintenanceListOutputBuilder readMaintenanceList(EntityInput input) {
ReadMaintenanceListOutputBuilder outputBuilder = new ReadMaintenanceListOutputBuilder();
QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.maintenance.list.output.Data> result =
@@ -199,6 +209,9 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.mediator.server.list.output.Pagination
+ //mediatorserverRW
public ReadMediatorServerListOutputBuilder readMediatorServerList(EntityInput input) {
ReadMediatorServerListOutputBuilder outputBuilder = new ReadMediatorServerListOutputBuilder();
@@ -211,6 +224,9 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.network.element.connection.list.output.PaginationBuilder
+ //networkelementConnectionRW
public ReadNetworkElementConnectionListOutputBuilder readNetworkElementConnectionList(EntityInput input) {
ReadNetworkElementConnectionListOutputBuilder outputBuilder =
new ReadNetworkElementConnectionListOutputBuilder();
@@ -223,6 +239,9 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.PaginationBuilder
+ //equipmentRW
public ReadInventoryListOutputBuilder readInventoryList(EntityInput input) {
ReadInventoryListOutputBuilder outputBuilder = new ReadInventoryListOutputBuilder();
QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data> result =
@@ -234,6 +253,9 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.inventory.list.output.PaginationBuilder
+ //connnectionlogRW
public ReadConnectionlogListOutputBuilder readConnectionlogList(EntityInput input) {
ReadConnectionlogListOutputBuilder outputBuilder = new ReadConnectionlogListOutputBuilder();
QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.Data> result =
@@ -245,6 +267,9 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.PaginationBuilder
+ //eventlogRW
public ReadEventlogListOutputBuilder readEventlogList(ReadEventlogListInput input) throws IOException {
ReadEventlogListOutputBuilder outputBuilder = new ReadEventlogListOutputBuilder();
QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.eventlog.list.output.Data> result =
@@ -256,11 +281,12 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.PaginationBuilder
public ReadPmdata15mListOutputBuilder readPmdata15mList(EntityInput input) {
ReadPmdata15mListOutputBuilder outputBuilder = new ReadPmdata15mListOutputBuilder();
QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.Data> result =
this.pm15mRW.getData(input);
- LOG.debug("Read data: readPmdata15mList: {}", result);
outputBuilder.setData(result.getResult().getHits());
outputBuilder.setPagination(
new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._15m.list.output.PaginationBuilder(
@@ -268,6 +294,8 @@ public class ElasticSearchDataProvider {
return outputBuilder;
}
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.Data
+ //org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.Pagination
public ReadPmdata24hListOutputBuilder readPmdata24hList(EntityInput input) {
ReadPmdata24hListOutputBuilder outputBuilder = new ReadPmdata24hListOutputBuilder();
QueryResult<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.pmdata._24h.list.output.Data> result =
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/acessor/DataObjectAcessorStatus.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/acessor/DataObjectAcessorStatus.java
index efb52213d..3926d3f51 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/acessor/DataObjectAcessorStatus.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/acessor/DataObjectAcessorStatus.java
@@ -22,6 +22,7 @@
package org.onap.ccsdk.features.sdnr.wt.dataprovider.data.acessor;
import java.io.IOException;
+
import org.onap.ccsdk.features.sdnr.wt.common.database.ExtRestClient;
import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
@@ -30,7 +31,6 @@ import org.onap.ccsdk.features.sdnr.wt.common.database.requests.SearchRequest;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.AggregationEntries;
import org.onap.ccsdk.features.sdnr.wt.common.database.responses.SearchResponse;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.rpctypehelper.QueryResult;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.YangHelper2;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.status.output.Data;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.status.output.DataBuilder;
@@ -55,13 +55,9 @@ public class DataObjectAcessorStatus extends DataObjectAcessor<Data> {
SearchResponse response = this.dbClient.search(request);
AggregationEntries aggs = response.getAggregations(ESDATATYPE_FAULTCURRENT_SEVERITY_KEY);
- Data[] data = {new DataBuilder()
- .setFaults(
- new FaultsBuilder().setCriticals(YangHelper2.getLongOrUint32(aggs.getOrDefault("Critical", 0L)))
- .setMajors(YangHelper2.getLongOrUint32(aggs.getOrDefault("Major", 0L)))
- .setMinors(YangHelper2.getLongOrUint32(aggs.getOrDefault("Minor", 0L)))
- .setWarnings(YangHelper2.getLongOrUint32(aggs.getOrDefault("Warning", 0L))).build())
- .build()};
+ Data[] data = {new DataBuilder().setFaults(new FaultsBuilder().setCriticals(aggs.getOrDefault("Critical", 0L))
+ .setMajors(aggs.getOrDefault("Major", 0L)).setMinors(aggs.getOrDefault("Minor", 0L))
+ .setWarnings(aggs.getOrDefault("Warning", 0L)).build()).build()};
long toalsize = data.length;
return new QueryResult<Data>(1L, 1L, new SearchResult<Data>(data, toalsize));
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/rpctypehelper/QueryResult.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/rpctypehelper/QueryResult.java
index 6e653baf2..4cd015a7f 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/rpctypehelper/QueryResult.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/data/rpctypehelper/QueryResult.java
@@ -22,8 +22,8 @@
package org.onap.ccsdk.features.sdnr.wt.dataprovider.data.rpctypehelper;
import java.math.BigInteger;
+
import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.YangHelper2;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.PaginationOutputG;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.read.connectionlog.list.output.PaginationBuilder;
@@ -36,9 +36,9 @@ public class QueryResult<T> {
this.result = result;
PaginationBuilder x = new PaginationBuilder();
- x.setPage(YangHelper2.getBigIntegerOrUint64(BigInteger.valueOf(page)));
- x.setSize(YangHelper2.getLongOrUint32(pageSize));
- x.setTotal(YangHelper2.getBigIntegerOrUint64(BigInteger.valueOf(result.getTotal())));
+ x.setPage(BigInteger.valueOf(page));
+ x.setSize(pageSize);
+ x.setTotal(BigInteger.valueOf(result.getTotal()));
pagination = x.build();
}
@@ -46,9 +46,9 @@ public class QueryResult<T> {
this.result = result;
PaginationBuilder x = new PaginationBuilder();
- x.setPage(YangHelper2.getBigIntegerOrUint64(BigInteger.valueOf(queryByFilter.getPage())));
- x.setSize(YangHelper2.getLongOrUint32(queryByFilter.getPageSize()));
- x.setTotal(YangHelper2.getBigIntegerOrUint64(BigInteger.valueOf(result.getTotal())));
+ x.setPage(BigInteger.valueOf(queryByFilter.getPage()));
+ x.setSize(queryByFilter.getPageSize());
+ x.setTotal(BigInteger.valueOf(result.getTotal()));
pagination = x.build();
}
@@ -61,11 +61,6 @@ public class QueryResult<T> {
return pagination;
}
- @Override
- public String toString() {
- return "QueryResult [result=" + result + ", pagination=" + pagination + "]";
- }
-
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/EsDataObjectReaderWriter2.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/EsDataObjectReaderWriter2.java
index 603c25bae..bf1aff372 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/EsDataObjectReaderWriter2.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/database/EsDataObjectReaderWriter2.java
@@ -33,7 +33,6 @@ import org.onap.ccsdk.features.sdnr.wt.common.database.SearchHit;
import org.onap.ccsdk.features.sdnr.wt.common.database.SearchResult;
import org.onap.ccsdk.features.sdnr.wt.common.database.queries.QueryBuilder;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapper2;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapperHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.Entity;
import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -143,7 +142,7 @@ public class EsDataObjectReaderWriter2<T extends DataObject> {
* @return this for further operations.
*/
public EsDataObjectReaderWriter2<T> setEsIdAttributeNameCamelized(String esIdAttributeName) {
- return setEsIdAttributeName(YangToolsMapperHelper.toCamelCaseAttributeName(esIdAttributeName));
+ return setEsIdAttributeName(YangToolsMapper2.toCamelCaseAttributeName(esIdAttributeName));
}
/**
@@ -361,13 +360,14 @@ public class EsDataObjectReaderWriter2<T extends DataObject> {
result = db.doReadAllJsonData(dataTypeName, ignoreException);
}
hits = result.getHits();
- LOG.debug("Read: {} elements: {}", dataTypeName, hits.size());
+ LOG.debug("Read: {} elements: {} Failures: {}", dataTypeName, hits.size(),
+ yangtoolsMapper.getMappingFailures());
T object;
for (SearchHit hit : hits) {
object = getT(hit.getSourceAsString());
- LOG.debug("Mapp Object: {}\nSource: '{}'\nResult: '{}'\n", hit.getId(),
- hit.getSourceAsString(), object);
+ LOG.debug("Mapp Object: {}\nSource: '{}'\nResult: '{}'\n Failures: {}", hit.getId(),
+ hit.getSourceAsString(), object, yangtoolsMapper.getMappingFailures());
if (object != null) {
setEsId(object, hit.getId());
res.add(object);
@@ -397,7 +397,7 @@ public class EsDataObjectReaderWriter2<T extends DataObject> {
try {
return yangtoolsMapper.readValue(jsonString, clazz);
} catch (IOException e) {
- LOG.info("Mapping problem {}:", clazz.getName(), e);
+ LOG.info("Mapping problem", e);
return null;
}
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java
index bb4023abc..085d3816a 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/DataTreeHttpServlet.java
@@ -28,13 +28,16 @@ import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
import org.json.JSONObject;
import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
import org.onap.ccsdk.features.sdnr.wt.dataprovider.impl.DataTreeProviderImpl;
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java
index fd6be82db..81b9645fe 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/AboutHttpServlet.java
@@ -73,7 +73,7 @@ public class AboutHttpServlet extends HttpServlet {
private static final String README_FILE = "README.md";
private static final String NO_DEVICEMANAGERS_RUNNING_MESSAGE = null;
- private final String groupId = this.getGroupIdOrDefault("org.onap.ccsdk.features.sdnr.wt");
+ private final String groupId = "org.onap.ccsdk.features.sdnr.wt";
private final String artifactId = "sdnr-wt-data-provider-provider";
private final Map<Integer,String> BUNDLESTATE_LUT;
@@ -97,18 +97,7 @@ public class AboutHttpServlet extends HttpServlet {
}
- protected String getGroupIdOrDefault(String def) {
- String symbolicName = this.getManifestValue("Bundle-SymbolicName");
- if(symbolicName!=null) {
- int idx = symbolicName.indexOf(this.artifactId);
- if(idx>0) {
- return symbolicName.substring(0, idx-1);
- }
- }
- return def;
- }
-
- // public void setBundleService(BundleService bundleService) {
+ // public void setBundleService(BundleService bundleService) {
// this.bundleService = bundleService;
// }
@@ -210,7 +199,7 @@ public class AboutHttpServlet extends HttpServlet {
* @param key
* @return
*/
- protected String getManifestValue(String key) {
+ private String getManifestValue(String key) {
URL url = Resources.getUrlForRessource(AboutHttpServlet.class, "/META-INF/MANIFEST.MF");
if (url == null) {
return null;
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java
index 491775eb0..b08e5ad16 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/http/about/ODLVersionLUT.java
@@ -60,7 +60,6 @@ public class ODLVersionLUT {
}
if(odlMdsalVersionLUT==null) {
odlMdsalVersionLUT = new HashMap<>();
- odlMdsalVersionLUT.put("6.0.7","aluminium-SR1 (0.13.1)");
odlMdsalVersionLUT.put("6.0.4","aluminium-SR0 (0.13.0)");
odlMdsalVersionLUT.put("5.0.14","magnesium-SR2 (0.12.2)");
odlMdsalVersionLUT.put("5.0.10","magnesium-SR1 (0.12.1)");
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java
index 5ef7a0ad9..30819dca2 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/impl/DataProviderServiceImpl.java
@@ -57,8 +57,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultcurrentListOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadFaultlogListOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadInventoryListOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadMaintenanceListInput;
@@ -87,6 +85,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.pro
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateMediatorServerOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.UpdateNetworkElementConnectionOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.ReadGuiCutThroughEntryOutputBuilder;
import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.concepts.ObjectRegistration;
import org.opendaylight.yangtools.yang.binding.DataObject;
@@ -164,7 +165,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadFaultcurrentListOutput>> readFaultcurrentList(
ReadFaultcurrentListInput input) {
- LOG.debug("RPC Request: readFaultCurrentList with input {}", input);
+ LOG.debug("RPC Request: getFaultCurrentEntityList with input {}", input);
RpcResultBuilder<ReadFaultcurrentListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readFaultCurrentList(input));
return result.buildFuture();
@@ -172,7 +173,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadFaultlogListOutput>> readFaultlogList(ReadFaultlogListInput input) {
- LOG.debug("RPC Request: readFaultlogList with input {}", input);
+ LOG.debug("RPC Request: getFaultCurrentEntityList with input {}", input);
RpcResultBuilder<ReadFaultlogListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readFaultLogList(input));
return result.buildFuture();
@@ -180,7 +181,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadMaintenanceListOutput>> readMaintenanceList(ReadMaintenanceListInput input) {
- LOG.debug("RPC Request: readMaintenanceList with input {}", input);
+ LOG.debug("RPC Request: getMaintenanceEntityList with input {}", input);
RpcResultBuilder<ReadMaintenanceListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readMaintenanceList(input));
return result.buildFuture();
@@ -189,7 +190,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadMediatorServerListOutput>> readMediatorServerList(
ReadMediatorServerListInput input) {
- LOG.debug("RPC Request: readMediatorServerList with input {}", input);
+ LOG.debug("RPC Request: getMediatorServerEntityList with input {}", input);
RpcResultBuilder<ReadMediatorServerListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readMediatorServerList(input));
return result.buildFuture();
@@ -198,7 +199,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadNetworkElementConnectionListOutput>> readNetworkElementConnectionList(
ReadNetworkElementConnectionListInput input) {
- LOG.debug("RPC Request: readNetworkElementConnectionList with input {}", input);
+ LOG.debug("RPC Request: getNetworkElementConnectionEntityList with input {}", input);
RpcResultBuilder<ReadNetworkElementConnectionListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readNetworkElementConnectionList(input));
return result.buildFuture();
@@ -207,7 +208,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadPmdata15mListOutput>> readPmdata15mList(ReadPmdata15mListInput input) {
- LOG.debug("RPC Request: readPmdata15mList with input {}", input);
+ LOG.debug("RPC Request: getNetworkElementConnectionEntityList with input {}", input);
RpcResultBuilder<ReadPmdata15mListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readPmdata15mList(input));
return result.buildFuture();
@@ -216,7 +217,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadPmdata24hListOutput>> readPmdata24hList(ReadPmdata24hListInput input) {
- LOG.debug("RPC Request: readPmdata24hList with input {}", input);
+ LOG.debug("RPC Request: getNetworkElementConnectionEntityList with input {}", input);
RpcResultBuilder<ReadPmdata24hListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readPmdata24hList(input));
return result.buildFuture();
@@ -225,7 +226,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadStatusOutput>> readStatus(ReadStatusInput input) {
- LOG.debug("RPC Request: readStatusEntityList with input {}", input);
+ LOG.debug("RPC Request: getStatusEntityList with input {}", input);
RpcResultBuilder<ReadStatusOutput> result = read(() -> DataProviderServiceImpl.this.dataProvider.readStatus());
return result.buildFuture();
@@ -233,7 +234,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadInventoryListOutput>> readInventoryList(ReadInventoryListInput input) {
- LOG.debug("RPC Request: readInventoryList with input {}", input);
+ LOG.debug("RPC Request: getInventoryEntityList with input {}", input);
RpcResultBuilder<ReadInventoryListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readInventoryList(input));
return result.buildFuture();
@@ -242,7 +243,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadPmdata15mLtpListOutput>> readPmdata15mLtpList(
ReadPmdata15mLtpListInput input) {
- LOG.debug("RPC Request: readPmdata15mLtpList with input {}", input);
+ LOG.debug("RPC Request: readPmdataLtpList with input {}", input);
RpcResultBuilder<ReadPmdata15mLtpListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readPmdata15mLtpList(input));
return result.buildFuture();
@@ -251,7 +252,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadPmdata15mDeviceListOutput>> readPmdata15mDeviceList(
ReadPmdata15mDeviceListInput input) {
- LOG.debug("RPC Request: readPmdata15mDeviceList with input {}", input);
+ LOG.debug("RPC Request: readPmdataDeviceList with input {}", input);
RpcResultBuilder<ReadPmdata15mDeviceListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readPmdata15mDeviceList(input));
return result.buildFuture();
@@ -260,7 +261,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadPmdata24hLtpListOutput>> readPmdata24hLtpList(
ReadPmdata24hLtpListInput input) {
- LOG.debug("RPC Request: readPmdata24hLtpList with input {}", input);
+ LOG.debug("RPC Request: readPmdataLtpList with input {}", input);
RpcResultBuilder<ReadPmdata24hLtpListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readPmdata24hLtpList(input));
return result.buildFuture();
@@ -269,7 +270,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadPmdata24hDeviceListOutput>> readPmdata24hDeviceList(
ReadPmdata24hDeviceListInput input) {
- LOG.debug("RPC Request: readPmdata24hDeviceList with input {}", input);
+ LOG.debug("RPC Request: readPmdataDeviceList with input {}", input);
RpcResultBuilder<ReadPmdata24hDeviceListOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readPmdata24hDeviceList(input));
return result.buildFuture();
@@ -305,7 +306,6 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<DeleteNetworkElementConnectionOutput>> deleteNetworkElementConnection(
DeleteNetworkElementConnectionInput input) {
- LOG.debug("RPC Request: deleteNetworkElementConnection with input {}", input);
RpcResultBuilder<DeleteNetworkElementConnectionOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.deleteNetworkElementConnection(input));
return result.buildFuture();
@@ -376,7 +376,7 @@ public class DataProviderServiceImpl implements DataProviderService, AutoCloseab
@Override
public ListenableFuture<RpcResult<ReadGuiCutThroughEntryOutput>> readGuiCutThroughEntry(
ReadGuiCutThroughEntryInput input) {
- LOG.debug("RPC Request: getGuiCutThroughEntry with input {}", input);
+ LOG.debug("RPC Request: readGuiCutThroughEntry with input {}", input);
RpcResultBuilder<ReadGuiCutThroughEntryOutput> result =
read(() -> DataProviderServiceImpl.this.dataProvider.readGuiCutThroughEntry(input));
return result.buildFuture();
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/DateAndTimeBuilder.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/DateAndTimeBuilder.java
new file mode 100644
index 000000000..628890018
--- /dev/null
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/DateAndTimeBuilder.java
@@ -0,0 +1,15 @@
+package org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
+
+public class DateAndTimeBuilder {
+ private final String _value;
+
+ public DateAndTimeBuilder(String v) {
+ this._value = v;
+ }
+
+ public DateAndTime build() {
+ return new DateAndTime(_value);
+ }
+}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper.java
index e7580c69a..0b1e7d520 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper.java
@@ -21,15 +21,33 @@
*/
package org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools;
+import java.io.IOException;
+import javax.annotation.Nullable;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.Credentials;
+import org.opendaylight.yangtools.concepts.Builder;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.mapperextensions.YangToolsBuilderAnnotationIntrospector;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.mapperextensions.YangToolsModule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
+import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder.Value;
+import com.fasterxml.jackson.databind.introspect.AnnotatedClass;
+import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
/**
* YangToolsMapper is a specific Jackson mapper configuration for opendaylight yangtools serialization or
@@ -38,23 +56,182 @@ import org.slf4j.LoggerFactory;
*/
public class YangToolsMapper extends ObjectMapper {
- @SuppressWarnings("unused")
private final Logger LOG = LoggerFactory.getLogger(YangToolsMapper.class);
private static final long serialVersionUID = 1L;
+ private static BundleContext context;
public YangToolsMapper() {
- this(new YangToolsBuilderAnnotationIntrospector());
- }
-
- protected YangToolsMapper(YangToolsBuilderAnnotationIntrospector yangToolsBuilderAnnotationIntrospector) {
super();
-
configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE);
setSerializationInclusion(Include.NON_NULL);
- enable(MapperFeature.USE_GETTERS_AS_SETTERS);
- setAnnotationIntrospector(yangToolsBuilderAnnotationIntrospector);
- registerModule(new YangToolsModule());
+ setAnnotationIntrospector(new YangToolsBuilderAnnotationIntrospector());
+ SimpleModule dateAndTimeSerializerModule = new SimpleModule();
+ dateAndTimeSerializerModule.addSerializer(DateAndTime.class, new CustomDateAndTimeSerializer());
+ registerModule(dateAndTimeSerializerModule);
+ Bundle bundle = FrameworkUtil.getBundle(YangToolsMapper.class);
+ context = bundle != null ? bundle.getBundleContext() : null;
+ }
+
+ @Override
+ public String writeValueAsString(Object value) throws JsonProcessingException {
+ // TODO Auto-generated method stub
+ return super.writeValueAsString(value);
+ }
+
+ /**
+ * Get Builder object for yang tools interface.
+ *
+ * @param <T> yang-tools base datatype
+ * @param clazz class with interface.
+ * @return builder for interface or null if not existing
+ */
+ @SuppressWarnings("unchecked")
+ public @Nullable <T extends DataObject> Builder<T> getBuilder(Class<T> clazz) {
+ String builder = clazz.getName() + "Builder";
+ try {
+ Class<?> clazzBuilder = findClass(builder);
+ return (Builder<T>) clazzBuilder.newInstance();
+ } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
+ LOG.debug("Problem ", e);
+ return null;
+ }
+ }
+
+ /**
+ * Callback for handling mapping failures.
+ *
+ * @return
+ */
+ public int getMappingFailures() {
+ return 0;
+ }
+
+ /**
+ * Provide mapping of string to attribute names, generated by yang-tools. "netconf-id" converted to "_netconfId"
+ *
+ * @param name with attribute name, not null or empty
+ * @return converted string or null if name was empty or null
+ */
+ public @Nullable static String toCamelCaseAttributeName(final String name) {
+ if (name == null || name.isEmpty())
+ return null;
+
+ final StringBuilder ret = new StringBuilder(name.length());
+ if (!name.startsWith("_"))
+ ret.append('_');
+ int start = 0;
+ for (final String word : name.split("-")) {
+ if (!word.isEmpty()) {
+ if (start++ == 0) {
+ ret.append(Character.toLowerCase(word.charAt(0)));
+ } else {
+ ret.append(Character.toUpperCase(word.charAt(0)));
+ }
+ ret.append(word.substring(1));
+ }
+ }
+ return ret.toString();
}
+ /**
+ * Adapted Builder callbacks
+ */
+ private static class YangToolsBuilderAnnotationIntrospector extends JacksonAnnotationIntrospector {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Class<?> findPOJOBuilder(AnnotatedClass ac) {
+ try {
+ String builder = null;
+ if (ac.getRawType().equals(Credentials.class)) {
+ builder =
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder";
+ //System.out.println(DataContainer.class.isAssignableFrom(ac.getRawType()));
+ //System.out.println(ChoiceIn.class.isAssignableFrom(ac.getRawType()));
+
+ } else if (ac.getRawType().equals(DateAndTime.class)) {
+ builder = DateAndTimeBuilder.class.getName();
+ }
+
+ else {
+ if (ac.getRawType().isInterface()) {
+ builder = ac.getName() + "Builder";
+ }
+ }
+ if (builder != null) {
+ //System.out.println("XX1: "+ac.getRawType());
+ //System.out.println("XX2: "+builder);
+ //Class<?> innerBuilder = Class.forName(builder);
+ Class<?> innerBuilder = findClass(builder);
+ //System.out.println("Builder found: "+ innerBuilder);
+ return innerBuilder;
+ }
+ } catch (ClassNotFoundException e) {
+ // No problem .. try next
+ }
+ return super.findPOJOBuilder(ac);
+ }
+
+ @Override
+ public Value findPOJOBuilderConfig(AnnotatedClass ac) {
+ if (ac.hasAnnotation(JsonPOJOBuilder.class)) {
+ return super.findPOJOBuilderConfig(ac);
+ }
+ return new JsonPOJOBuilder.Value("build", "set");
+ }
+ }
+
+ private static Class<?> findClass(String name) throws ClassNotFoundException {
+ // Try to find in other bundles
+ if (context != null) {
+ //OSGi environment
+ for (Bundle b : context.getBundles()) {
+ try {
+ return b.loadClass(name);
+ } catch (ClassNotFoundException e) {
+ // No problem, this bundle doesn't have the class
+ }
+ }
+ throw new ClassNotFoundException("Can not find Class in OSGi context.");
+ } else {
+ return Class.forName(name);
+ }
+ // not found in any bundle
+ }
+
+ public static class DateAndTimeBuilder {
+
+ private final String _value;
+
+ public DateAndTimeBuilder(String v) {
+ this._value = v;
+ }
+
+ public DateAndTime build() {
+ return new DateAndTime(_value);
+ }
+
+ }
+ public static class CustomDateAndTimeSerializer extends StdSerializer<DateAndTime> {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public CustomDateAndTimeSerializer() {
+ this(null);
+ }
+
+ protected CustomDateAndTimeSerializer(Class<DateAndTime> t) {
+ super(t);
+ }
+
+ @Override
+ public void serialize(DateAndTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeString(value.getValue());
+ }
+
+ }
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper2.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper2.java
index a19f114e3..8f05437c9 100644
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper2.java
+++ b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapper2.java
@@ -21,12 +21,31 @@
*/
package org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools;
-import java.lang.reflect.InvocationTargetException;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
+import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder.Value;
+import com.fasterxml.jackson.databind.introspect.AnnotatedClass;
+import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+import java.io.IOException;
import javax.annotation.Nullable;
import org.eclipse.jdt.annotation.NonNull;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.mapperextensions.YangToolsBuilderAnnotationIntrospector;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.pm.types.rev191129.PmDataType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.Credentials;
import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.TypeObject;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,13 +54,17 @@ import org.slf4j.LoggerFactory;
* deserialization of DataObject to/from JSON TODO ChoiceIn and Credentials deserialization only for
* LoginPasswordBuilder
*/
-public class YangToolsMapper2<T extends DataObject> extends YangToolsMapper {
+public class YangToolsMapper2<T extends DataObject> extends ObjectMapper {
private static final Logger LOG = LoggerFactory.getLogger(YangToolsMapper2.class);
private static final long serialVersionUID = 1L;
+ private static String BUILDER = "Builder";
+ private @Nullable final Class<T> clazz;
private @Nullable final Class<? extends Builder<? extends T>> builderClazz;
+ private BundleContext context;
+
/**
* Generic Object creation of yangtools java class builder pattern.
*
@@ -54,10 +77,32 @@ public class YangToolsMapper2<T extends DataObject> extends YangToolsMapper {
*/
public <X extends T, B extends Builder<X>> YangToolsMapper2(@NonNull Class<T> clazz,
@Nullable Class<B> builderClazz) throws ClassNotFoundException {
- super(new YangToolsBuilderAnnotationIntrospector(clazz, builderClazz));
+ super();
+ configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE);
+ setSerializationInclusion(Include.NON_NULL);
+ setAnnotationIntrospector(new YangToolsBuilderAnnotationIntrospector());
+ SimpleModule dateAndTimeSerializerModule = new SimpleModule();
+ dateAndTimeSerializerModule.addSerializer(DateAndTime.class, new CustomDateAndTimeSerializer());
+ registerModule(dateAndTimeSerializerModule);
+
+ SimpleModule pmDataTypeSerializerModule = new SimpleModule();
+ pmDataTypeSerializerModule.addSerializer(PmDataType.class, new CustomPMDataTypeSerializer());
+ registerModule(pmDataTypeSerializerModule);
+ Bundle bundle = FrameworkUtil.getBundle(YangToolsMapper2.class);
- this.builderClazz =
- builderClazz != null ? builderClazz : getBuilderClass(YangToolsMapperHelper.getBuilderClassName(clazz));
+ this.clazz = clazz;
+ this.builderClazz = builderClazz != null ? builderClazz : getBuilderClass(getBuilderClassName(clazz));
+ context = bundle != null ? bundle.getBundleContext() : null;
+ }
+
+ public <X extends T, B extends Builder<X>> YangToolsMapper2(@NonNull Class<T> clazz) throws ClassNotFoundException {
+ this(clazz, null);
+ }
+
+ @Override
+ public String writeValueAsString(Object value) throws JsonProcessingException {
+ return super.writeValueAsString(value);
}
/**
@@ -70,19 +115,75 @@ public class YangToolsMapper2<T extends DataObject> extends YangToolsMapper {
public @Nullable Builder<? extends T> getBuilder(Class<T> clazz) {
try {
if (builderClazz != null)
- return builderClazz.getDeclaredConstructor().newInstance();
+ return builderClazz.newInstance();
else
return null;
- } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException
- | NoSuchMethodException | SecurityException e) {
- LOG.warn("Problem intantiating Builder", e);
+ } catch (InstantiationException | IllegalAccessException e) {
+ LOG.debug("Problem ", e);
+ return null;
+ }
+ }
+
+ /**
+ * Callback for handling mapping failures.
+ *
+ * @return
+ */
+ public int getMappingFailures() {
+ return 0;
+ }
+
+ /**
+ * Provide mapping of string to attribute names, generated by yang-tools. "netconf-id" converted to "_netconfId"
+ *
+ * @param name with attribute name, not null or empty
+ * @return converted string or null if name was empty or null
+ */
+ public @Nullable static String toCamelCaseAttributeName(final String name) {
+ if (name == null || name.isEmpty())
return null;
+
+ final StringBuilder ret = new StringBuilder(name.length());
+ if (!name.startsWith("_"))
+ ret.append('_');
+ int start = 0;
+ for (final String word : name.split("-")) {
+ if (!word.isEmpty()) {
+ if (start++ == 0) {
+ ret.append(Character.toLowerCase(word.charAt(0)));
+ } else {
+ ret.append(Character.toUpperCase(word.charAt(0)));
+ }
+ ret.append(word.substring(1));
+ }
}
+ return ret.toString();
+ }
+
+ /**
+ * Verify if builder is available
+ *
+ * @throws ClassNotFoundException
+ **/
+ public Class<?> assertBuilderClass(Class<?> clazz) throws ClassNotFoundException {
+ return getBuilderClass(getBuilderClassName(clazz));
}
// --- Private functions
/**
+ * Create name of builder class
+ *
+ * @param <T>
+ * @param clazz
+ * @return builders class name
+ * @throws ClassNotFoundException
+ */
+ private static String getBuilderClassName(Class<?> clazz) {
+ return clazz.getName() + BUILDER;
+ }
+
+ /**
* Search builder in context
*
* @param name
@@ -91,7 +192,128 @@ public class YangToolsMapper2<T extends DataObject> extends YangToolsMapper {
*/
@SuppressWarnings("unchecked")
private <X extends T, B extends Builder<X>> Class<B> getBuilderClass(String name) throws ClassNotFoundException {
- return (Class<B>) YangToolsMapperHelper.getBuilderClass(name);
+ // Try to find in other bundles
+ if (context != null) {
+ //OSGi environment
+ for (Bundle b : context.getBundles()) {
+ LOG.info("Search in bundle: {}", b.getSymbolicName());
+ try {
+ return (Class<B>) b.loadClass(name);
+ } catch (ClassNotFoundException e) {
+ // No problem, this bundle doesn't have the class
+ }
+ }
+ throw new ClassNotFoundException("Can not find Class in OSGi context.");
+ } else {
+ return (Class<B>) Class.forName(name);
+ }
+ // not found in any bundle
+ }
+
+ // --- Classes
+
+ /**
+ * Adapted Builder callbacks
+ */
+ private class YangToolsBuilderAnnotationIntrospector extends JacksonAnnotationIntrospector {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Class<?> findPOJOBuilder(AnnotatedClass ac) {
+ Class<?> clazz2build = ac.getRawType();
+ if (clazz2build.equals(Credentials.class)) {
+ return org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder.class;
+
+ } else if (clazz2build.equals(DateAndTime.class)) {
+ return DateAndTimeBuilder.class;
+ // } else if (ac.getRawType().equals(PmDataType.class)) {
+ // LOG.info("Builder class");
+ // return PMDataTypeBuilder.class;
+ } else if (clazz2build.equals(clazz)) {
+ return builderClazz;
+ }
+
+ if (clazz2build.isInterface() || TypeObject.class.isAssignableFrom(clazz2build)) {
+ String builder = getBuilderClassName(clazz2build);
+ LOG.info("Search: {}", builder);
+ Class<?> innerBuilder;
+ try {
+ innerBuilder = Class.forName(builder);
+ LOG.info("Found1: {}", innerBuilder);
+ return innerBuilder;
+ } catch (ClassNotFoundException e) {
+ LOG.info("Could not find {}", clazz2build);
+ // No problem .. try next
+ }
+ try {
+ innerBuilder = getBuilderClass(builder);
+ LOG.info("Found2: {}", innerBuilder);
+ return innerBuilder;
+ } catch (ClassNotFoundException e) {
+ LOG.info("Could not find {}", clazz2build);
+ // No problem .. try next
+ }
+ }
+ Class<?> clazz = super.findPOJOBuilder(ac);
+ return clazz;
+ }
+
+ @Override
+ public Value findPOJOBuilderConfig(AnnotatedClass ac) {
+ if (ac.hasAnnotation(JsonPOJOBuilder.class)) {
+ return super.findPOJOBuilderConfig(ac);
+ }
+ return new JsonPOJOBuilder.Value("build", "set");
+ }
+ }
+
+ public static class DateAndTimeBuilder {
+
+ private final String _value;
+
+ public DateAndTimeBuilder(String v) {
+ this._value = v;
+ }
+
+ public DateAndTime build() {
+ return new DateAndTime(_value);
+ }
+
}
+ public static class CustomDateAndTimeSerializer extends StdSerializer<@NonNull DateAndTime> {
+ private static final long serialVersionUID = 1L;
+
+ public CustomDateAndTimeSerializer() {
+ this(null);
+ }
+
+ protected CustomDateAndTimeSerializer(Class<DateAndTime> t) {
+ super(t);
+ }
+
+ @Override
+ public void serialize(DateAndTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeString(value.getValue());
+ }
+
+ }
+ public static class CustomPMDataTypeSerializer extends StdSerializer<@NonNull PmDataType> {
+
+ private static final long serialVersionUID = 1L;
+
+ public CustomPMDataTypeSerializer() {
+ this(null);
+ }
+
+ protected CustomPMDataTypeSerializer(Class<PmDataType> t) {
+ super(t);
+ }
+
+ @Override
+ public void serialize(PmDataType value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
+ gen.writeString(value.toString());
+ }
+
+ }
}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapperHelper.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapperHelper.java
deleted file mode 100644
index a2afab0a8..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/YangToolsMapperHelper.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * ============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.dataprovider.yangtools;
-
-import com.fasterxml.jackson.databind.DeserializationContext;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-import javax.annotation.Nullable;
-import org.opendaylight.yangtools.concepts.Builder;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.FrameworkUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class YangToolsMapperHelper {
-
- private static final Logger LOG = LoggerFactory.getLogger(YangToolsMapperHelper.class);
- private static final String TYPEOBJECT_INSTANCE_METHOD = "getDefaultInstance";
- private static final String BUILDER = "Builder";
-
- private static BundleContext context = getBundleContext();
- private static ConcurrentHashMap<String, Class<?>> cache = new ConcurrentHashMap<>();
-
- private YangToolsMapperHelper() {
- //Make unaccessible
- }
-
- public static Class<?> findClass(String name) throws ClassNotFoundException {
-
- //Try first in cache
- Class<?> res = cache.get(name);
- if (res != null) {
- return res;
- }
- //Try first in actual bundle
- try {
- return loadClass(null, name);
- } catch (ClassNotFoundException e) {
- // No problem, this bundle doesn't have the class
- }
- // Try to find in other bundles
- if (context != null) {
- //OSGi environment
- for (Bundle b : context.getBundles()) {
- try {
- return loadClass(b, name);
- } catch (ClassNotFoundException e) {
- // No problem, this bundle doesn't have the class
- }
- }
- }
- // really not found in any bundle
- throw new ClassNotFoundException("Can not find class '"+name+"'");
- }
-
- private static Class<?> loadClass(Bundle b, String name) throws ClassNotFoundException {
- Class<?> res = b == null ? Class.forName(name) : b.loadClass(name);
- cache.put(name, res);
- return res;
- }
-
- /**
- * Verify if builder is available
- *
- * @throws ClassNotFoundException
- **/
- public static Class<?> assertBuilderClass(Class<?> clazz) throws ClassNotFoundException {
- return getBuilderClass(getBuilderClassName(clazz));
- }
-
- public static Class<?> getBuilderClass(String name) throws ClassNotFoundException {
- return findClass(name);
- }
-
- public static Class<?> getBuilderClass(Class<?> clazz) throws ClassNotFoundException {
- return findClass(getBuilderClassName(clazz));
- }
-
- /**
- * Create name of builder class
- *
- * @param <T>
- * @param clazz
- * @return builders class name
- * @throws ClassNotFoundException
- */
- public static String getBuilderClassName(Class<?> clazz) {
- return clazz.getName() + BUILDER;
- }
-
- @SuppressWarnings("unchecked")
- public static <B extends Builder<?>> Class<B> findBuilderClass(DeserializationContext ctxt, Class<?> clazz) throws ClassNotFoundException {
- return (Class<B>) findClass(getBuilderClassName(clazz));
- }
-
- public static <B extends Builder<?>> Optional<Class<B>> findBuilderClassOptional(DeserializationContext ctxt, Class<?> clazz) {
- try {
- return Optional.of(findBuilderClass(ctxt, clazz));
- } catch (ClassNotFoundException e) {
- return Optional.empty();
- }
- }
-
- public static boolean hasClassDeclaredMethod(Class<?> clazz, String name) {
- Method[] methods = clazz.getDeclaredMethods();
- for (Method m : methods) {
- if (m.getName().equals(name)) {
- return true;
- }
- }
- return false;
- }
-
- @SuppressWarnings("unchecked")
- public static <T> Optional<T> getInstanceByConstructor(Class<?> clazz, String arg) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
- List<Class<?>> ctypes = getConstructorParameterTypes(clazz, String.class);
- Optional<Object> oObj;
- for (Class<?> ctype : ctypes) {
- if (ctype.equals(String.class)) {
- return Optional.of((T) clazz.getConstructor(ctype).newInstance(arg));
- } else if ((oObj = getDefaultInstance(ctype, arg)).isPresent()) {
- return Optional.of((T) clazz.getConstructor(ctype).newInstance(oObj.get()));
- } else {
- // TODO: recursive instantiation down to string constructor or
- // getDefaultInstance method
- LOG.debug("Not implemented arg:'{}' class:'{}'", arg, clazz);
- }
- }
- return Optional.empty();
- }
-
- @SuppressWarnings("unchecked")
- public static <T> Optional<T> getDefaultInstance(@Nullable Class<?> clazz, String arg)
- throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
- InvocationTargetException {
- LOG.trace("arg:'{}' clazz '{}'", arg, clazz.getName());
- if (clazz != null) {
- Method[] methods = clazz.getDeclaredMethods();
- for (Method m : methods) {
- //TODO Verify argument type to avoid exception
- if (m.getName().equals(TYPEOBJECT_INSTANCE_METHOD)) {
- Method method = clazz.getDeclaredMethod(TYPEOBJECT_INSTANCE_METHOD, String.class);
- LOG.trace("Invoke {} available {}",TYPEOBJECT_INSTANCE_METHOD, method != null);
- return Optional.of((T) method.invoke(null, arg));
- }
- }
- }
- return Optional.empty();
- }
-
- public static <T> Optional<T> getDefaultInstance(Optional<Class<T>> optionalClazz, String arg)
- throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
- InvocationTargetException {
- if (optionalClazz.isPresent()) {
- return getDefaultInstance(optionalClazz.get(), arg);
- }
- return Optional.empty();
- }
-
- public static List<Class<?>> getConstructorParameterTypes(Class<?> clazz, Class<?> prefer) {
-
- Constructor<?>[] constructors = clazz.getConstructors();
- List<Class<?>> res = new ArrayList<>();
- for (Constructor<?> c : constructors) {
- Class<?>[] ptypes = c.getParameterTypes();
- if (ptypes.length == 1) {
- res.add(ptypes[0]);
- }
-
- if (prefer != null && ptypes.length == 1 && ptypes[0].equals(prefer)) {
- return Arrays.asList(prefer);
- }
- }
- return res;
- }
-
- public static boolean implementsInterface(Class<?> clz, Class<?> ifToImplement) {
- Class<?>[] ifs = clz.getInterfaces();
- for (Class<?> iff : ifs) {
- if (iff.equals(ifToImplement)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Provide mapping of string to attribute names, generated by yang-tools. "netconf-id" converted to "_netconfId"
- *
- * @param name with attribute name, not null or empty
- * @return converted string or null if name was empty or null
- */
- public @Nullable static String toCamelCaseAttributeName(final String name) {
- if (name == null || name.isEmpty())
- return null;
-
- final StringBuilder ret = new StringBuilder(name.length());
- if (!name.startsWith("_"))
- ret.append('_');
- int start = 0;
- for (final String word : name.split("-")) {
- if (!word.isEmpty()) {
- if (start++ == 0) {
- ret.append(Character.toLowerCase(word.charAt(0)));
- } else {
- ret.append(Character.toUpperCase(word.charAt(0)));
- }
- ret.append(word.substring(1));
- }
- }
- return ret.toString();
- }
-
- private static BundleContext getBundleContext() {
- Bundle bundle = FrameworkUtil.getBundle(YangToolsMapperHelper.class);
- return bundle != null ? bundle.getBundleContext() : null;
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/builder/DateAndTimeBuilder.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/builder/DateAndTimeBuilder.java
deleted file mode 100644
index 8dbaf4ab9..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/builder/DateAndTimeBuilder.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.builder;
-
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
-
-public class DateAndTimeBuilder {
- private final String _value;
-
- public DateAndTimeBuilder(String v) {
- this._value = v;
- }
-
- public DateAndTime build() {
- return new DateAndTime(_value);
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsBuilderAnnotationIntrospector.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsBuilderAnnotationIntrospector.java
deleted file mode 100644
index 0a119e0a7..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsBuilderAnnotationIntrospector.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.mapperextensions;
-
-import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
-import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder.Value;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
-import com.fasterxml.jackson.databind.introspect.AnnotatedClass;
-import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
-import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector;
-import java.math.BigInteger;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapperHelper;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.builder.DateAndTimeBuilder;
-//import org.onap.ccsdk.features.sdnr.wt.dataprovider.data.builders.rev201110.read.network.element.connection.list.output.DataBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.Credentials;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder;
-import org.opendaylight.yangtools.yang.common.Uint16;
-import org.opendaylight.yangtools.yang.common.Uint32;
-import org.opendaylight.yangtools.yang.common.Uint64;
-import org.opendaylight.yangtools.yang.common.Uint8;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class YangToolsBuilderAnnotationIntrospector extends JacksonAnnotationIntrospector {
-
- private static final Logger LOG = LoggerFactory.getLogger(YangToolsBuilderAnnotationIntrospector.class);
- private static final long serialVersionUID = 1L;
-
- private final Map<Class<?>, String> customDeserializer;
-
- public YangToolsBuilderAnnotationIntrospector() {
- this(null, null);
- }
-
- public YangToolsBuilderAnnotationIntrospector(Class<?> cls, Class<?> builderClass) {
- this.customDeserializer = new HashMap<>();
- if (cls != null && builderClass != null) {
- this.customDeserializer.put(cls, builderClass.getName());
- }
- this.customDeserializer.put(DateAndTime.class, DateAndTimeBuilder.class.getName());
- this.customDeserializer.put(Credentials.class, LoginPasswordBuilder.class.getName());
- }
-
- @Override
- public Class<?> findPOJOBuilder(AnnotatedClass ac) {
- try {
- String builder = null;
- if (this.customDeserializer.containsKey(ac.getRawType())) {
- builder = this.customDeserializer.get(ac.getRawType());
- } else {
- if (ac.getRawType().isInterface()) {
- builder = ac.getName() + "Builder";
- }
- }
- if (builder != null) {
- LOG.trace("map {} with builder {}", ac.getName(), builder);
- Class<?> innerBuilder = YangToolsMapperHelper.findClass(builder);
- return innerBuilder;
- }
- } catch (ClassNotFoundException e) {
- LOG.trace("builder class not found for {}", ac.getName());
- }
- return super.findPOJOBuilder(ac);
- }
-
- @Override
- public Value findPOJOBuilderConfig(AnnotatedClass ac) {
- if (ac.hasAnnotation(JsonPOJOBuilder.class)) {
- return super.findPOJOBuilderConfig(ac);
- }
- return new JsonPOJOBuilder.Value("build", "set");
- }
-
- @Override
- public AnnotatedMethod resolveSetterConflict(MapperConfig<?> config, AnnotatedMethod setter1,
- AnnotatedMethod setter2) {
- Class<?> p1 = setter1.getRawParameterType(0);
- Class<?> p2 = setter2.getRawParameterType(0);
- AnnotatedMethod res = null;
-
- if (this.isAssignable(p1, p2, Map.class, List.class)) {
- res = p1.isAssignableFrom(List.class) ? setter1 : setter2; //prefer List setter
- } else if (this.isAssignable(p1, p2, Uint64.class, BigInteger.class)) {
- res = setter1;
- } else if (this.isAssignable(p1, p2, Uint32.class, Long.class)) {
- res = setter1;
- } else if (this.isAssignable(p1, p2, Uint16.class, Integer.class)) {
- res = setter1;
- } else if (this.isAssignable(p1, p2, Uint8.class, Short.class)) {
- res = setter1;
- }
- if (res == null) {
- res = super.resolveSetterConflict(config, setter1, setter2);
- }
- LOG.debug("{} (m1={} <=> m2={} => result:{})", setter1.getName(), p1.getSimpleName(), p2.getSimpleName(),
- res.getRawParameterType(0).getSimpleName());
-
- return res;
- }
-
- private boolean isAssignable(Class<?> p1, Class<?> p2, Class<?> c1, Class<?> c2) {
- return ((p1.isAssignableFrom(c1) && p2.isAssignableFrom(c2))
- || (p2.isAssignableFrom(c1) && p1.isAssignableFrom(c2)));
-
- }
-
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsDeserializerModifier.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsDeserializerModifier.java
deleted file mode 100644
index 634a3bc5b..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsDeserializerModifier.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.mapperextensions;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.DeserializationConfig;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.KeyDeserializer;
-import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.NoSuchElementException;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.ScalarTypeObject;
-//import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.ScalarTypeObject;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.YangHelper2;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapperHelper;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.BaseIdentityDeserializer;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.ClassDeserializer;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.IdentifierDeserializer;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.TypeObjectDeserializer;
-import org.opendaylight.yangtools.yang.binding.BaseIdentity;
-import org.opendaylight.yangtools.yang.binding.Identifier;
-import org.opendaylight.yangtools.yang.binding.TypeObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class YangToolsDeserializerModifier extends BeanDeserializerModifier {
-
- private static final Logger LOG = LoggerFactory.getLogger(YangToolsDeserializerModifier.class);
- private static final String getEnumMethodName="valueOf";
-
- @Override
- public JsonDeserializer<Enum<?>> modifyEnumDeserializer(DeserializationConfig config, final JavaType type,
- BeanDescription beanDesc, final JsonDeserializer<?> deserializer) {
- return new JsonDeserializer<Enum<?>>() {
-
- @Override
- public Enum<?> deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
- Class<?> clazz = type.getRawClass();
-
- try {
- Method method = clazz.getDeclaredMethod(getEnumMethodName, String.class);
- Enum<?> result = (Enum<?>) method.invoke(null, jp.getValueAsString());
- LOG.debug("Deserialize '{}' with class '{}' to '{}'", jp.getValueAsString(), clazz.getName(), result);
- return result;
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
- | NoSuchMethodException | NoSuchElementException | SecurityException e) {
- LOG.warn("problem deserializing enum for {} with value {}: {}", clazz.getName(),
- jp.getValueAsString(), e);
- }
- throw new IOException(
- "unable to parse enum (" + type.getRawClass() + ")for value " + jp.getValueAsString());
- }
- };
- }
-
- @Override
- public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc,
- JsonDeserializer<?> deserializer) {
- final JavaType type = beanDesc.getType();
- final Class<?> rawClass = type.getRawClass();
-
- JsonDeserializer<?> deser = super.modifyDeserializer(config, beanDesc, deserializer);
-
- if (YangToolsMapperHelper.implementsInterface(rawClass, TypeObject.class)) {
- deser = new TypeObjectDeserializer<TypeObject>(type, deser);
- } else if (YangToolsMapperHelper.implementsInterface(rawClass, YangHelper2.getScalarTypeObjectClass())) {
- deser = new TypeObjectDeserializer<ScalarTypeObject>(type, deser);
- } else if (YangToolsMapperHelper.implementsInterface(rawClass, BaseIdentity.class)) {
- deser = new BaseIdentityDeserializer<BaseIdentity>(deser);
- } else if (rawClass.equals(Class.class)) {
- deser = new ClassDeserializer(rawClass);
- }
-
- LOG.debug("Deserialize '{}' with deserializer '{}'", rawClass.getName(), deser.getClass().getName());
- return deser;
- }
-
- @Override
- public KeyDeserializer modifyKeyDeserializer(DeserializationConfig config, JavaType type, KeyDeserializer deser) {
- KeyDeserializer res;
- if (YangToolsMapperHelper.implementsInterface(type.getRawClass(), Identifier.class)) {
- res = new IdentifierDeserializer();
- } else {
- res = super.modifyKeyDeserializer(config, type, deser);
- }
- LOG.debug("Keydeserialize '{}' with deserializer '{}'", type.getRawClass().getName(), res.getClass().getName());
- return res;
- }
-
- void test() {
- com.fasterxml.jackson.databind.util.ClassUtil xy;
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsModule.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsModule.java
deleted file mode 100644
index 46f69d4f9..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/mapperextensions/YangToolsModule.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.mapperextensions;
-
-import com.fasterxml.jackson.databind.module.SimpleModule;
-import java.util.Map;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.DateAndTimeSerializer;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.EnumSerializer;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.IdentifierDeserializer;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.MapSerializer;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.serialize.TypeObjectSerializer;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.pmdata.grp.MeasurementKey;
-import org.opendaylight.yangtools.yang.binding.TypeObject;
-
-public class YangToolsModule extends SimpleModule {
-
- private static final long serialVersionUID = 1L;
-
- public YangToolsModule() {
- super();
- setDeserializerModifier(new YangToolsDeserializerModifier());
-
- addKeyDeserializer(MeasurementKey.class, new IdentifierDeserializer());
- addSerializer(DateAndTime.class, new DateAndTimeSerializer());
- addSerializer(TypeObject.class, new TypeObjectSerializer());
- addSerializer(Enum.class, new EnumSerializer());
- addSerializer(Map.class, new MapSerializer());
- }
-
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/BaseIdentityDeserializer.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/BaseIdentityDeserializer.java
deleted file mode 100644
index 10f18e796..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/BaseIdentityDeserializer.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.serialize;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import java.io.IOException;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapperHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BaseIdentityDeserializer<T> extends JsonDeserializer<T> {
-
- private static final Logger LOG = LoggerFactory.getLogger(BaseIdentityDeserializer.class);
- private final JsonDeserializer<?> deser;
-
- public BaseIdentityDeserializer(final JsonDeserializer<?> deser) {
- this.deser = deser;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public T deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException, JsonProcessingException {
- LOG.debug("BaseIdentityDeserializer class for '{}'",parser.getValueAsString());
- String clazzToSearch = parser.getValueAsString();
- // clazz from Elasticsearch is full qualified
- int lastDot = clazzToSearch.lastIndexOf(".");
- if (lastDot > -1) {
- clazzToSearch = clazzToSearch.substring(lastDot+1);
- } else {
- clazzToSearch = clazzToSearch.substring(0, 1).toUpperCase() + clazzToSearch.substring(1);
- }
- Class<?> clazz;
- try {
- clazz = YangToolsMapperHelper.findClass(clazzToSearch);
- if (clazz != null)
- return (T)clazz;
- } catch (ClassNotFoundException e) {
- LOG.warn("BaseIdentityDeserializer class not found for '"+parser.getValueAsString()+"'",e);
- }
- return (T) deser.deserialize(parser, ctxt);
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/ClassDeserializer.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/ClassDeserializer.java
deleted file mode 100644
index 2627c2ae0..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/ClassDeserializer.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.serialize;
-
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;
-import java.io.IOException;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapperHelper;
-
-public class ClassDeserializer extends FromStringDeserializer<Class<?>> {
-
- private static final long serialVersionUID = 1L;
-
- public ClassDeserializer(Class<?> vc) {
- super(vc);
- }
-
- @Override
- protected Class<?> _deserialize(String value, DeserializationContext ctxt) throws IOException {
- try {
- return YangToolsMapperHelper.findClass(value);
- } catch (ClassNotFoundException e) {
- throw new IOException("Can not find class "+value,e);
- }
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/DateAndTimeSerializer.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/DateAndTimeSerializer.java
deleted file mode 100644
index a35aad75a..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/DateAndTimeSerializer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.serialize;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.ser.std.StdSerializer;
-import java.io.IOException;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
-
-/**
- * DateAndTime shouldn't be encapsulated into a json object to be able to use elasticsearch date time query functions.
- */
-public class DateAndTimeSerializer extends StdSerializer<@NonNull DateAndTime> {
-
- private static final long serialVersionUID = 1L;
-
- public DateAndTimeSerializer() {
- this(null);
- }
-
- protected DateAndTimeSerializer(Class<DateAndTime> t) {
- super(t);
- }
-
- @Override
- public void serialize(DateAndTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeString(value.getValue());
- }
-
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/EnumSerializer.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/EnumSerializer.java
deleted file mode 100644
index f8220c2d4..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/EnumSerializer.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.serialize;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import java.io.IOException;
-
-@SuppressWarnings("rawtypes")
-public class EnumSerializer extends JsonSerializer<Enum> {
-
- @Override
- public void serialize(Enum value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeString(value.name());
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/IdentifierDeserializer.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/IdentifierDeserializer.java
deleted file mode 100644
index 0837b8a19..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/IdentifierDeserializer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.serialize;
-
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.KeyDeserializer;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.List;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapperHelper;
-import org.opendaylight.yangtools.yang.common.Uint16;
-import org.opendaylight.yangtools.yang.common.Uint32;
-import org.opendaylight.yangtools.yang.common.Uint64;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class IdentifierDeserializer extends KeyDeserializer {
-
- private static final Logger LOG = LoggerFactory.getLogger(IdentifierDeserializer.class);
-
- public IdentifierDeserializer() {}
-
- @Override
- public Object deserializeKey(String key, DeserializationContext ctxt) throws IOException {
- Class<?> clazz = ctxt.getClass();
- final String arg = key;
- LOG.debug("Deserialization for key:{}",key);
- // find constructor argument types
- List<Class<?>> ctypes = YangToolsMapperHelper.getConstructorParameterTypes(clazz, String.class);
- for (Class<?> ctype : ctypes) {
- try {
- if (ctype.equals(String.class)) {
- return clazz.getConstructor(ctype).newInstance(arg);
- } else if (ctype.equals(Uint16.class)) {
- return clazz.getConstructor(ctype).newInstance(Uint16.valueOf(arg));
-
- } else if (ctype.equals(Uint32.class)) {
- return clazz.getConstructor(ctype).newInstance(Uint32.valueOf(arg));
- } else if (ctype.equals(Uint64.class)) {
- return clazz.getConstructor(ctype).newInstance(Uint64.valueOf(arg));
- }
- } catch (InstantiationException | IllegalAccessException | IllegalArgumentException
- | InvocationTargetException | NoSuchMethodException | SecurityException e) {
- LOG.warn("unable to instantiate class {} with arg {}: ", clazz, arg, e);
- throw new IllegalArgumentException(
- "unable to instantiate class " + clazz.getName() + " with arg '" + arg + "' ", e);
- }
- }
- return null;
- }
-
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/MapSerializer.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/MapSerializer.java
deleted file mode 100644
index e5c966a74..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/MapSerializer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.serialize;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import java.io.IOException;
-import java.util.Map;
-
-@SuppressWarnings("rawtypes")
-public class MapSerializer extends JsonSerializer<Map> {
-
- @Override
- public void serialize(Map value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- gen.writeObject(value.values());
- }
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/TypeObjectDeserializer.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/TypeObjectDeserializer.java
deleted file mode 100644
index 5beca0d47..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/TypeObjectDeserializer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.serialize;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.util.NoSuchElementException;
-import java.util.Optional;
-import org.onap.ccsdk.features.sdnr.wt.dataprovider.yangtools.YangToolsMapperHelper;
-import org.opendaylight.yangtools.concepts.Builder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TypeObjectDeserializer<T> extends JsonDeserializer<T> {
-
- private static final Logger LOG = LoggerFactory.getLogger(TypeObjectDeserializer.class);
- private final JavaType type;
- private final JsonDeserializer<?> deser;
-
-
- public TypeObjectDeserializer(final JavaType type, final JsonDeserializer<?> deser) {
- this.type = type;
- this.deser = deser;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public T deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException, JsonProcessingException {
-
- Class<T> clazz = (Class<T>) type.getRawClass();
- final String arg = parser.getValueAsString();
- LOG.debug("Try to build arg:'{}' with class {}",arg, clazz);
- Optional<T> oRes = Optional.empty();
- try {
- //try get method for default instance
- if ((oRes = YangToolsMapperHelper.getDefaultInstance(clazz, arg)).isEmpty()) {
- //try to find builder with getDefaultInstance method
- Optional<Class<Builder<?>>> oBuilderClazz = YangToolsMapperHelper.findBuilderClassOptional(ctxt, clazz);
- LOG.debug("Try builder class present:{}",oBuilderClazz.isPresent());
- if (oBuilderClazz.isEmpty()
- || ((oRes = YangToolsMapperHelper.getDefaultInstance(oBuilderClazz.get(), arg)).isEmpty())) {
- //try to find constructor with string
- LOG.debug("Try constructor");
- if ((oRes = YangToolsMapperHelper.getInstanceByConstructor(clazz, arg)).isEmpty()) {
- //forward to standard deserializer or throw if not available
- LOG.debug("Try default deserializer");
- oRes = Optional.of((T) deser.deserialize(parser, ctxt));
- }
- }
- }
- LOG.debug("Deserialize string value:{} for class:{} success:{}", arg, clazz, oRes.isPresent());
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException
- | NoSuchElementException | SecurityException | InstantiationException e) {
- LOG.warn("problem deserializing {} with value {}: {}", clazz.getName(), arg, e);
- }
- if (oRes.isPresent()) {
- return oRes.get();
- } else {
- throw new IllegalArgumentException("Could not find constructor for arg:'" + arg + "' and class: " + clazz);
- }
- }
-
-}
diff --git a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/TypeObjectSerializer.java b/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/TypeObjectSerializer.java
deleted file mode 100644
index 1269d0746..000000000
--- a/sdnr/wt/data-provider/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/dataprovider/yangtools/serialize/TypeObjectSerializer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * ============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.dataprovider.yangtools.serialize;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import org.opendaylight.yangtools.yang.binding.TypeObject;
-
-public class TypeObjectSerializer extends JsonSerializer<TypeObject> {
-
- @Override
- public void serialize(TypeObject value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
- //stringValue
- Method[] methods = value.getClass().getDeclaredMethods();
- String name;
- for (Method method : methods) {
- name = method.getName();
- if (name.equals("stringValue") || name.equals("getValue")) {
- try {
- gen.writeString((String)method.invoke(value));
- } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
- | IOException e) {
- throw new IOException("No String getter method supported TypeObject for "+value.getClass(),e);
- }
- }
- }
- }
-}