From 06b09776f5390fd763a39c9ab1f005e46fc00104 Mon Sep 17 00:00:00 2001 From: MukeshKumar Date: Fri, 6 Aug 2021 01:00:46 +0100 Subject: Fixing vulnerabilities Issue-ID: SO-3726 Signed-off-by: Mukesh Change-Id: Ie23b56383c776033d0577fbdafcb4e8746272a1f --- pom.xml | 7 -- so-etsi-sol003-adapter-common/pom.xml | 10 +++ .../etsi/sol003/adapter/common/GsonProvider.java | 51 ++++++++++++++ .../common/utils/LocalDateTimeTypeAdapter.java | 68 ++++++++++++++++++ .../common/utils/OffsetDateTimeTypeAdapter.java | 69 +++++++++++++++++++ .../so-etsi-sol003-adapter-lcm-api/pom.xml | 80 +++------------------- .../so-etsi-sol003-adapter-lcm-ext-clients/pom.xml | 73 +------------------- .../so-etsi-sol003-adapter-lcm-service/pom.xml | 10 +++ .../vnfm/VnfmServiceProviderConfiguration.java | 14 +++- .../lcm/rest/EtsiSol003AdapterControllerTest.java | 33 ++++----- .../so-etsi-sol003-adapter-pkgm-api/pom.xml | 71 ++----------------- .../pom.xml | 71 ++----------------- .../so-etsi-sol003-adapter-pkgm-service/pom.xml | 10 +++ .../EtsiCatalogServiceProviderConfiguration.java | 13 +++- .../vnfm/VnfmHttpServiceProviderConfiguration.java | 18 ++--- .../EtsiSubscriptionNotificationController.java | 32 +-------- ...EtsiSubscriptionNotificationControllerTest.java | 12 ++-- 17 files changed, 295 insertions(+), 347 deletions(-) create mode 100644 so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/GsonProvider.java create mode 100644 so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/utils/LocalDateTimeTypeAdapter.java create mode 100644 so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/utils/OffsetDateTimeTypeAdapter.java diff --git a/pom.xml b/pom.xml index 4cb1465..463e771 100644 --- a/pom.xml +++ b/pom.xml @@ -18,14 +18,7 @@ UTF-8 UTF-8 2.3.1 - 1.8.2 - 2.7.2 - 1.3.5 - 1.0.1 1.5.21 - 3.14.0 - 2.7.5 - 1.13.0 2.3.6.RELEASE 2.3.0 0.11 diff --git a/so-etsi-sol003-adapter-common/pom.xml b/so-etsi-sol003-adapter-common/pom.xml index bc39cc7..0640c5c 100644 --- a/so-etsi-sol003-adapter-common/pom.xml +++ b/so-etsi-sol003-adapter-common/pom.xml @@ -19,6 +19,16 @@ org.onap.so common ${so-core-version} + + + log4j + log4j + + + org.apache.tomcat + tomcat-catalina + + \ No newline at end of file diff --git a/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/GsonProvider.java b/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/GsonProvider.java new file mode 100644 index 0000000..9b28b7e --- /dev/null +++ b/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/GsonProvider.java @@ -0,0 +1,51 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.adapters.etsi.sol003.adapter.common; + +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import org.onap.so.adapters.etsi.sol003.adapter.common.utils.LocalDateTimeTypeAdapter; +import org.onap.so.adapters.etsi.sol003.adapter.common.utils.OffsetDateTimeTypeAdapter; +import org.springframework.stereotype.Component; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +/** + * @author Mukesh Kumar + * + */ +@Component +public class GsonProvider { + + private final OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new OffsetDateTimeTypeAdapter(); + private final LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(); + + public Gson getGson() { + return new GsonBuilder().registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter) + .registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter).create(); + } + + public Gson getGson(final LocalDateTimeTypeAdapter localDateTimeTypeAdapter) { + return new GsonBuilder().registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter) + .registerTypeAdapter(LocalDateTime.class, localDateTimeTypeAdapter).create(); + } + + +} diff --git a/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/utils/LocalDateTimeTypeAdapter.java b/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/utils/LocalDateTimeTypeAdapter.java new file mode 100644 index 0000000..d5a6a73 --- /dev/null +++ b/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/utils/LocalDateTimeTypeAdapter.java @@ -0,0 +1,68 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.adapters.etsi.sol003.adapter.common.utils; + +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class LocalDateTimeTypeAdapter extends TypeAdapter { + + private static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private DateTimeFormatter formatter; + + public LocalDateTimeTypeAdapter() { + this(DEFAULT_FORMATTER); + } + + public LocalDateTimeTypeAdapter(final DateTimeFormatter formatter) { + this.formatter = formatter; + } + + @Override + public void write(final JsonWriter out, final LocalDateTime localDateTime) throws IOException { + if (localDateTime == null) { + out.nullValue(); + } else { + out.value(formatter.format(localDateTime)); + } + } + + @Override + public LocalDateTime read(final JsonReader in) throws IOException { + if (JsonToken.NULL == in.peek()) { + in.nextNull(); + return null; + + } + final String dateTime = in.nextString(); + return LocalDateTime.parse(dateTime, formatter); + + } + +} diff --git a/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/utils/OffsetDateTimeTypeAdapter.java b/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/utils/OffsetDateTimeTypeAdapter.java new file mode 100644 index 0000000..a27d080 --- /dev/null +++ b/so-etsi-sol003-adapter-common/src/main/java/org/onap/so/adapters/etsi/sol003/adapter/common/utils/OffsetDateTimeTypeAdapter.java @@ -0,0 +1,69 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +package org.onap.so.adapters.etsi.sol003.adapter.common.utils; + +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; + +import java.io.IOException; +import java.time.OffsetDateTime; +import java.time.format.DateTimeFormatter; + +/** + * @author Waqas Ikram (waqas.ikram@est.tech) + * + */ +public class OffsetDateTimeTypeAdapter extends TypeAdapter { + + private DateTimeFormatter formatter; + + public OffsetDateTimeTypeAdapter() { + this(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + public OffsetDateTimeTypeAdapter(final DateTimeFormatter formatter) { + this.formatter = formatter; + } + + @Override + public void write(final JsonWriter out, final OffsetDateTime date) throws IOException { + if (date == null) { + out.nullValue(); + } else { + out.value(formatter.format(date)); + } + } + + @Override + public OffsetDateTime read(final JsonReader in) throws IOException { + if (JsonToken.NULL == in.peek()) { + in.nextNull(); + return null; + + } + String date = in.nextString(); + if (date.endsWith("+0000")) { + date = date.substring(0, date.length() - 5) + "Z"; + } + return OffsetDateTime.parse(date, formatter); + } +} diff --git a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-api/pom.xml b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-api/pom.xml index 1ea2077..61c60fd 100644 --- a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-api/pom.xml +++ b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-api/pom.xml @@ -23,18 +23,20 @@ ${basedir}/src/main/resources/etsisol003adapter.yaml java - retrofit2 ${project.build.directory}/generated-sources/etsisol003adapter org.onap.so.adapters.etsisol003adapter.lcm.v1.api org.onap.so.adapters.etsisol003adapter.lcm.v1.model false false + false + false true src/gen/java/main true true true + java8 @@ -48,17 +50,19 @@ ${basedir}/src/main/resources/SOL003-VNFLifecycleManagementNotification-API.json java - okhttp-gson ${project.build.directory}/generated-sources/sol003-vnf-lcn org.onap.so.adapters.etsisol003adapter.lcm.lcn.api org.onap.so.adapters.etsisol003adapter.lcm.lcn.model false false + false + false src/gen/java/main true true true + java8 @@ -71,12 +75,13 @@ ${basedir}/src/main/resources/SOL003-VNFLifecycleOperationGranting-API.json java - okhttp-gson ${project.build.directory}/generated-sources/sol003-vnf-grant org.onap.so.adapters.etsisol003adapter.lcm.grant.api org.onap.so.adapters.etsisol003adapter.lcm.grant.model false false + false + false false src/gen/java/main @@ -152,79 +157,10 @@ swagger-annotations ${swagger-core-version} - - com.squareup.retrofit2 - converter-gson - ${retrofit-version} - - - com.squareup.retrofit2 - retrofit - ${retrofit-version} - - - com.squareup.retrofit2 - converter-scalars - ${retrofit-version} - - - org.apache.oltu.oauth2 - org.apache.oltu.oauth2.client - ${oltu-version} - - - io.gsonfire - gson-fire - ${gson-fire-version} - - - org.threeten - threetenbp - ${threetenbp-version} - - - io.reactivex.rxjava2 - rxjava - - - com.squareup.retrofit2 - adapter-rxjava2 - ${retrofit-version} - com.google.code.gson gson - - com.squareup.okio - okio - ${okio-version} - - - com.squareup.okhttp3 - okhttp - ${okhttp3-version} - - - com.squareup.okhttp3 - logging-interceptor - ${okhttp3-version} - - - com.squareup.okhttp - logging-interceptor - ${okhttp-version} - - - com.squareup.okhttp - okhttp - ${okhttp-version} - - - com.squareup.okhttp - logging-interceptor - ${okhttp-version} - javax.xml.bind jaxb-api diff --git a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-ext-clients/pom.xml b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-ext-clients/pom.xml index dbce7b8..8d9f222 100644 --- a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-ext-clients/pom.xml +++ b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-ext-clients/pom.xml @@ -24,18 +24,20 @@ ${basedir}/src/main/resources/SOL003-VNFLifecycleManagement-API.json java - okhttp-gson ${project.build.directory}/generated-sources/sol003-vnf-lcm org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.api org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model false false + false + false true src/gen/java/main true true true + java8 @@ -97,79 +99,10 @@ swagger-annotations ${swagger-core-version} - - com.squareup.retrofit2 - converter-gson - ${retrofit-version} - - - com.squareup.retrofit2 - retrofit - ${retrofit-version} - - - com.squareup.retrofit2 - converter-scalars - ${retrofit-version} - - - org.apache.oltu.oauth2 - org.apache.oltu.oauth2.client - ${oltu-version} - - - io.gsonfire - gson-fire - ${gson-fire-version} - - - org.threeten - threetenbp - ${threetenbp-version} - - - io.reactivex.rxjava2 - rxjava - - - com.squareup.retrofit2 - adapter-rxjava2 - ${retrofit-version} - com.google.code.gson gson - - com.squareup.okio - okio - ${okio-version} - - - com.squareup.okhttp3 - okhttp - ${okhttp3-version} - - - com.squareup.okhttp3 - logging-interceptor - ${okhttp3-version} - - - com.squareup.okhttp - logging-interceptor - ${okhttp-version} - - - com.squareup.okhttp - okhttp - ${okhttp-version} - - - com.squareup.okhttp - logging-interceptor - ${okhttp-version} - javax.xml.bind jaxb-api diff --git a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/pom.xml b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/pom.xml index d400ac5..ccf0b40 100644 --- a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/pom.xml +++ b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/pom.xml @@ -63,6 +63,16 @@ org.onap.so common ${so-core-version} + + + log4j + log4j + + + org.apache.tomcat + tomcat-catalina + + org.onap.so diff --git a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderConfiguration.java b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderConfiguration.java index 1ed3ec9..026ce03 100644 --- a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderConfiguration.java +++ b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/lcm/extclients/vnfm/VnfmServiceProviderConfiguration.java @@ -27,6 +27,7 @@ import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; +import java.time.format.DateTimeFormatter; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; @@ -38,8 +39,9 @@ import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContextBuilder; import org.onap.aai.domain.yang.EsrSystemInfo; import org.onap.aai.domain.yang.EsrVnfm; +import org.onap.so.adapters.etsi.sol003.adapter.common.GsonProvider; import org.onap.so.adapters.etsi.sol003.adapter.common.configuration.AbstractServiceProviderConfiguration; -import org.onap.so.adapters.etsisol003adapter.lcm.v1.JSON; +import org.onap.so.adapters.etsi.sol003.adapter.common.utils.LocalDateTimeTypeAdapter; import org.onap.so.configuration.rest.BasicHttpHeadersProvider; import org.onap.so.rest.service.HttpRestServiceProvider; import org.onap.so.rest.service.HttpRestServiceProviderImpl; @@ -86,6 +88,12 @@ public class VnfmServiceProviderConfiguration extends AbstractServiceProviderCon @Autowired private RestTemplate defaultRestTemplate; + @Autowired + private GsonProvider gsonProvider; + + private final LocalDateTimeTypeAdapter localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(DateTimeFormatter.ISO_LOCAL_DATE); + + public HttpRestServiceProvider getHttpRestServiceProvider(final EsrVnfm vnfm) { if (!mapOfVnfmIdToHttpRestServiceProvider.containsKey(vnfm.getVnfmId())) { mapOfVnfmIdToHttpRestServiceProvider.put(vnfm.getVnfmId(), createHttpRestServiceProvider(vnfm)); @@ -154,7 +162,7 @@ public class VnfmServiceProviderConfiguration extends AbstractServiceProviderCon @Override protected Gson getGson() { - return new JSON().getGson(); + return gsonProvider.getGson(localDateTimeTypeAdapter); } -} +} \ No newline at end of file diff --git a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterControllerTest.java b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterControllerTest.java index 5bc4daa..1352e37 100644 --- a/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterControllerTest.java +++ b/so-etsi-sol003-adapter-lcm/so-etsi-sol003-adapter-lcm-service/src/test/java/org/onap/so/adapters/etsisol003adapter/lcm/rest/EtsiSol003AdapterControllerTest.java @@ -27,13 +27,15 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; -import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmRestTemplateConfiguration; import static org.springframework.test.web.client.match.MockRestRequestMatchers.content; import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; import static org.springframework.test.web.client.response.MockRestResponseCreators.withBadRequest; import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; import java.net.URI; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; +import java.time.ZoneOffset; import java.util.Optional; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; @@ -55,6 +57,7 @@ import org.onap.aaiclient.client.aai.AAIResourcesClient; import org.onap.aaiclient.client.aai.AAIVersion; import org.onap.aaiclient.client.aai.entities.uri.AAIBaseResourceUri; import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri; +import org.onap.so.adapters.etsi.sol003.adapter.common.GsonProvider; import org.onap.so.adapters.etsisol003adapter.lcm.extclients.EtsiPackageProvider; import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.VnfmRestTemplateConfiguration; import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200; @@ -63,7 +66,6 @@ import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineRe import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201.InstantiationStateEnum; import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201Links; import org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse201LinksSelf; -import org.onap.so.adapters.etsisol003adapter.lcm.lcn.JSON; import org.onap.so.adapters.etsisol003adapter.lcm.rest.exceptions.VnfmNotFoundException; import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfRequest; import org.onap.so.adapters.etsisol003adapter.lcm.v1.model.CreateVnfResponse; @@ -87,15 +89,12 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestTemplate; -import org.threeten.bp.LocalDateTime; -import org.threeten.bp.OffsetDateTime; -import org.threeten.bp.ZoneOffset; -import com.google.gson.Gson; @RunWith(SpringRunner.class) @SpringBootTest(classes = TestApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT) @ActiveProfiles("test") public class EtsiSol003AdapterControllerTest { + private static final OffsetDateTime JAN_1_2019_12_00 = OffsetDateTime.of(LocalDateTime.of(2019, 1, 1, 12, 0), ZoneOffset.UTC); @@ -120,7 +119,9 @@ public class EtsiSol003AdapterControllerTest { @Autowired EtsiSol003AdapterController controller; - Gson gson = new JSON().getGson(); + + @Autowired + GsonProvider gsonProvider; @Before public void setUp() throws Exception { @@ -142,11 +143,11 @@ public class EtsiSol003AdapterControllerTest { final InlineResponse201 createResponse = createCreateResponse(); mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_instances")) - .andRespond(withSuccess(gson.toJson(createResponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(createResponse), MediaType.APPLICATION_JSON)); mockRestServer.expect(requestTo("http://vnfm2:8080/subscriptions")) .andExpect(content().json(expectedsubscriptionRequest)) - .andRespond(withSuccess(gson.toJson(subscriptionResponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(subscriptionResponse), MediaType.APPLICATION_JSON)); mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_instances/vnfId/instantiate")) .andRespond(withStatus(HttpStatus.ACCEPTED).contentType(MediaType.APPLICATION_JSON) @@ -156,13 +157,13 @@ public class EtsiSol003AdapterControllerTest { org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum.INSTANTIATE, org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum.PROCESSING); mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_lcm_op_occs/123456")) - .andRespond(withSuccess(gson.toJson(firstOperationQueryResponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(firstOperationQueryResponse), MediaType.APPLICATION_JSON)); final InlineResponse200 secondOperationQueryReponse = createOperationQueryResponse( org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum.INSTANTIATE, org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum.COMPLETED); mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_lcm_op_occs/123456")) - .andRespond(withSuccess(gson.toJson(secondOperationQueryReponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(secondOperationQueryReponse), MediaType.APPLICATION_JSON)); // Invoke the create request @@ -217,7 +218,7 @@ public class EtsiSol003AdapterControllerTest { final InlineResponse201 reponse = new InlineResponse201(); mockRestServer.expect(requestTo(new URI("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm"))) - .andRespond(withSuccess(gson.toJson(reponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(reponse), MediaType.APPLICATION_JSON)); controller.vnfCreate("myTestVnfId", createVnfRequest, "asadas", "so", "1213"); } @@ -245,7 +246,7 @@ public class EtsiSol003AdapterControllerTest { final InlineResponse201 createResponse = createCreateResponse(); mockRestServer.expect(requestTo("http://vnfm2:8080/vnf_instances")) - .andRespond(withSuccess(gson.toJson(createResponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(createResponse), MediaType.APPLICATION_JSON)); mockRestServer.expect(requestTo("http://vnfm2:8080/subscriptions")).andRespond(withBadRequest()); @@ -293,13 +294,13 @@ public class EtsiSol003AdapterControllerTest { org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum.TERMINATE, org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum.PROCESSING); mockRestServer.expect(requestTo("http://vnfm1:8080/vnf_lcm_op_occs/1234567")) - .andRespond(withSuccess(gson.toJson(firstOperationQueryResponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(firstOperationQueryResponse), MediaType.APPLICATION_JSON)); final InlineResponse200 secondOperationQueryReponse = createOperationQueryResponse( org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationEnum.TERMINATE, org.onap.so.adapters.etsisol003adapter.lcm.extclients.vnfm.model.InlineResponse200.OperationStateEnum.COMPLETED); mockRestServer.expect(requestTo("http://vnfm1:8080/vnf_lcm_op_occs/1234567")) - .andRespond(withSuccess(gson.toJson(secondOperationQueryReponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(secondOperationQueryReponse), MediaType.APPLICATION_JSON)); final RequestEntity request = RequestEntity .delete(new URI("http://localhost:" + port + "/so/vnfm-adapter/v1/vnfs/myTestVnfId")) @@ -340,7 +341,7 @@ public class EtsiSol003AdapterControllerTest { final InlineResponse201 reponse = new InlineResponse201(); reponse.setInstantiationState(InstantiationStateEnum.NOT_INSTANTIATED); mockRestServer.expect(requestTo(new URI("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm"))) - .andRespond(withSuccess(gson.toJson(reponse), MediaType.APPLICATION_JSON)); + .andRespond(withSuccess(gsonProvider.getGson().toJson(reponse), MediaType.APPLICATION_JSON)); mockRestServer.expect(requestTo("http://vnfm:8080/vnfs/myTestVnfIdOnVnfm")) .andRespond(withStatus(HttpStatus.NO_CONTENT).contentType(MediaType.APPLICATION_JSON)); diff --git a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-api/pom.xml b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-api/pom.xml index 2f8af00..883d60d 100644 --- a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-api/pom.xml +++ b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-api/pom.xml @@ -23,12 +23,13 @@ ${basedir}/src/main/resources/ETSI-Catalog-Notification-API.json java - okhttp-gson ${project.build.directory}/generated-sources/etsicatalog/notification org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.api org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model false false + false + false src/gen/java/main true @@ -46,17 +47,19 @@ ${basedir}/src/main/resources/SOL003-VNFPackageManagement-API.json java - okhttp-gson ${project.build.directory}/generated-sources/sol003-vnf-packagemanagement org.onap.so.adapters.etsisol003adapter.pkgm.api org.onap.so.adapters.etsisol003adapter.pkgm.model false false + false + false src/gen/java/main true true true + java8 @@ -119,74 +122,10 @@ swagger-annotations ${swagger-core-version} - - com.squareup.retrofit2 - converter-gson - ${retrofit-version} - - - com.squareup.retrofit2 - retrofit - ${retrofit-version} - - - com.squareup.retrofit2 - converter-scalars - ${retrofit-version} - - - org.apache.oltu.oauth2 - org.apache.oltu.oauth2.client - ${oltu-version} - - - io.gsonfire - gson-fire - ${gson-fire-version} - - - org.threeten - threetenbp - ${threetenbp-version} - - - io.reactivex.rxjava2 - rxjava - - - com.squareup.retrofit2 - adapter-rxjava2 - ${retrofit-version} - com.google.code.gson gson - - com.squareup.okio - okio - ${okio-version} - - - com.squareup.okhttp3 - okhttp - ${okhttp3-version} - - - com.squareup.okhttp3 - logging-interceptor - ${okhttp3-version} - - - com.squareup.okhttp - logging-interceptor - ${okhttp-version} - - - com.squareup.okhttp - okhttp - ${okhttp-version} - javax.xml.bind jaxb-api diff --git a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-ext-clients/pom.xml b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-ext-clients/pom.xml index 4f734d8..66a2921 100644 --- a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-ext-clients/pom.xml +++ b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-ext-clients/pom.xml @@ -23,17 +23,19 @@ ${basedir}/src/main/resources/ETSI-Catalog-API.json java - okhttp-gson ${project.build.directory}/generated-sources/etsicatalog org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.api org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model false false + false + false src/gen/java/main true true true + java8 @@ -45,12 +47,13 @@ ${basedir}/src/main/resources/SOL003-VNFPackageManagement-Notification-API.json java - okhttp-gson ${project.build.directory}/generated-sources/sol003-vnf-packagemanagement/notification org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.api org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model false false + false + false src/gen/java/main true @@ -119,74 +122,10 @@ swagger-annotations ${swagger-core-version} - - com.squareup.retrofit2 - converter-gson - ${retrofit-version} - - - com.squareup.retrofit2 - retrofit - ${retrofit-version} - - - com.squareup.retrofit2 - converter-scalars - ${retrofit-version} - - - org.apache.oltu.oauth2 - org.apache.oltu.oauth2.client - ${oltu-version} - - - io.gsonfire - gson-fire - ${gson-fire-version} - - - org.threeten - threetenbp - ${threetenbp-version} - - - io.reactivex.rxjava2 - rxjava - - - com.squareup.retrofit2 - adapter-rxjava2 - ${retrofit-version} - com.google.code.gson gson - - com.squareup.okio - okio - ${okio-version} - - - com.squareup.okhttp3 - okhttp - ${okhttp3-version} - - - com.squareup.okhttp3 - logging-interceptor - ${okhttp3-version} - - - com.squareup.okhttp - logging-interceptor - ${okhttp-version} - - - com.squareup.okhttp - okhttp - ${okhttp-version} - javax.xml.bind jaxb-api diff --git a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/pom.xml b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/pom.xml index a300c2b..03ba808 100644 --- a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/pom.xml +++ b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/pom.xml @@ -64,6 +64,16 @@ org.onap.so common ${so-core-version} + + + log4j + log4j + + + org.apache.tomcat + tomcat-catalina + + org.onap.so.adapters.so-etsi-sol003-adapter diff --git a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java index 1ff3672..f83d975 100644 --- a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java +++ b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/etsicatalog/EtsiCatalogServiceProviderConfiguration.java @@ -25,6 +25,7 @@ import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; +import java.time.format.DateTimeFormatter; import java.util.concurrent.TimeUnit; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; @@ -40,7 +41,9 @@ import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.ssl.SSLContextBuilder; import org.onap.logging.filter.spring.SpringClientPayloadFilter; import org.onap.so.adapters.etsi.sol003.adapter.common.configuration.AbstractServiceProviderConfiguration; +import org.onap.so.adapters.etsi.sol003.adapter.common.utils.LocalDateTimeTypeAdapter; import org.onap.so.configuration.rest.BasicHttpHeadersProvider; +import org.onap.so.adapters.etsi.sol003.adapter.common.GsonProvider; import org.onap.so.configuration.rest.HttpClientConnectionConfiguration; import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter; import org.onap.so.rest.service.HttpRestServiceProvider; @@ -75,6 +78,10 @@ public class EtsiCatalogServiceProviderConfiguration extends AbstractServiceProv private final HttpClientConnectionConfiguration clientConnectionConfiguration; + private final GsonProvider gsonProvider; + + private final LocalDateTimeTypeAdapter localDateTimeTypeAdapter; + @Value("${etsi-catalog-manager.http.client.ssl.trust-store:#{null}}") private Resource trustStore; @Value("${etsi-catalog-manager.http.client.ssl.trust-store-password:#{null}}") @@ -82,8 +89,10 @@ public class EtsiCatalogServiceProviderConfiguration extends AbstractServiceProv @Autowired public EtsiCatalogServiceProviderConfiguration( - final HttpClientConnectionConfiguration clientConnectionConfiguration) { + final HttpClientConnectionConfiguration clientConnectionConfiguration, final GsonProvider gsonProvider) { this.clientConnectionConfiguration = clientConnectionConfiguration; + this.gsonProvider = gsonProvider; + this.localDateTimeTypeAdapter = new LocalDateTimeTypeAdapter(DateTimeFormatter.ISO_LOCAL_DATE); } @Bean @@ -170,7 +179,7 @@ public class EtsiCatalogServiceProviderConfiguration extends AbstractServiceProv @Override protected Gson getGson() { - return new JSON().getGson(); + return gsonProvider.getGson(localDateTimeTypeAdapter); } } diff --git a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/vnfm/VnfmHttpServiceProviderConfiguration.java b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/vnfm/VnfmHttpServiceProviderConfiguration.java index 22bbef9..72b937c 100644 --- a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/vnfm/VnfmHttpServiceProviderConfiguration.java +++ b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/extclients/vnfm/VnfmHttpServiceProviderConfiguration.java @@ -20,11 +20,8 @@ package org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm; import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE; -import java.time.LocalDateTime; -import java.time.OffsetDateTime; import org.onap.so.adapters.etsi.sol003.adapter.common.configuration.AbstractServiceProviderConfiguration; -import org.onap.so.adapters.etsisol003adapter.pkgm.JSON; -import org.onap.so.adapters.etsisol003adapter.pkgm.rest.EtsiSubscriptionNotificationController; +import org.onap.so.adapters.etsi.sol003.adapter.common.GsonProvider; import org.onap.so.configuration.rest.BasicHttpHeadersProvider; import org.onap.so.rest.service.HttpRestServiceProvider; import org.onap.so.rest.service.HttpRestServiceProviderImpl; @@ -41,10 +38,16 @@ import com.google.gson.Gson; */ @Configuration public class VnfmHttpServiceProviderConfiguration extends AbstractServiceProviderConfiguration { - private final JSON.OffsetDateTimeTypeAdapter offsetDateTimeTypeAdapter = new JSON.OffsetDateTimeTypeAdapter(); public static final String VNFM_ADAPTER_HTTP_SERVICE_PROVIDER_BEAN = "vnfmAdapterHttpServiceProvider"; + private final GsonProvider gsonProvider; + + @Autowired + public VnfmHttpServiceProviderConfiguration(final GsonProvider gsonProvider) { + this.gsonProvider = gsonProvider; + } + @Bean @Qualifier(VNFM_ADAPTER_HTTP_SERVICE_PROVIDER_BEAN) public HttpRestServiceProvider vnfmAdapterHttpRestServiceProvider( @@ -55,10 +58,7 @@ public class VnfmHttpServiceProviderConfiguration extends AbstractServiceProvide @Override protected Gson getGson() { - return JSON.createGson().registerTypeAdapter(OffsetDateTime.class, offsetDateTimeTypeAdapter) - .registerTypeAdapter(LocalDateTime.class, - new EtsiSubscriptionNotificationController.LocalDateTimeTypeAdapter()) - .create(); + return gsonProvider.getGson(); } } diff --git a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationController.java b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationController.java index 2b4b486..b19fe2c 100644 --- a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationController.java +++ b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/main/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationController.java @@ -22,12 +22,11 @@ package org.onap.so.adapters.etsisol003adapter.pkgm.rest; import static org.onap.so.adapters.etsi.sol003.adapter.common.CommonConstants.ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL; import static org.slf4j.LoggerFactory.getLogger; -import java.io.IOException; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.AbstractMap; import java.util.Map.Entry; import javax.ws.rs.core.MediaType; +import org.onap.so.adapters.etsi.sol003.adapter.common.utils.LocalDateTimeTypeAdapter; import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgChangeNotification; import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgOnboardingNotification; import org.onap.so.adapters.etsisol003adapter.pkgm.rest.exceptions.InternalServerErrorException; @@ -45,9 +44,6 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.JsonParser; -import com.google.gson.TypeAdapter; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; /** * This controller handles the ETSI Subscription Notification Endpoints. @@ -137,30 +133,4 @@ public class EtsiSubscriptionNotificationController { "Unable to parse notification type in object \n" + notification); } - public static class LocalDateTimeTypeAdapter extends TypeAdapter { - - private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - - @Override - public void write(final JsonWriter out, final LocalDateTime localDateTime) throws IOException { - if (localDateTime == null) { - out.nullValue(); - } else { - out.value(FORMATTER.format(localDateTime)); - } - } - - @Override - public LocalDateTime read(final JsonReader in) throws IOException { - switch (in.peek()) { - case NULL: - in.nextNull(); - return null; - default: - final String dateTime = in.nextString(); - return LocalDateTime.parse(dateTime, FORMATTER); - } - } - } - } diff --git a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationControllerTest.java b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationControllerTest.java index efe6891..6a00a33 100644 --- a/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationControllerTest.java +++ b/so-etsi-sol003-adapter-pkgm/so-etsi-sol003-adapter-pkgm-service/src/test/java/org/onap/so/adapters/etsisol003adapter/pkgm/rest/EtsiSubscriptionNotificationControllerTest.java @@ -32,7 +32,6 @@ import static org.springframework.test.web.client.match.MockRestRequestMatchers. import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; import java.net.URI; -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -44,7 +43,7 @@ import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.NOT import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgChangeNotification; import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgOnboardingNotification; import org.onap.so.adapters.etsisol003adapter.etsicatalog.notification.model.PkgmLinks; -import org.onap.so.adapters.etsisol003adapter.pkgm.JSON; +import org.onap.so.adapters.etsi.sol003.adapter.common.GsonProvider; import org.onap.so.adapters.etsisol003adapter.pkgm.PackageManagementConstants; import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.etsicatalog.model.ProblemDetails; import org.onap.so.adapters.etsisol003adapter.pkgm.extclients.vnfm.notification.model.VnfPackageChangeNotification; @@ -116,6 +115,10 @@ public class EtsiSubscriptionNotificationControllerTest { @Autowired @Qualifier(CONFIGURABLE_REST_TEMPLATE) private RestTemplate restTemplate; + + @Autowired + private GsonProvider gsonProvider; + private MockRestServiceServer mockRestServiceServer; private TestRestTemplate testRestTemplate; @@ -131,10 +134,9 @@ public class EtsiSubscriptionNotificationControllerTest { cache = cacheServiceProvider.getCache(PackageManagementConstants.PACKAGE_MANAGEMENT_SUBSCRIPTION_CACHE); cache.clear(); - final Gson gson = JSON.createGson().registerTypeAdapter(LocalDateTime.class, - new EtsiSubscriptionNotificationController.LocalDateTimeTypeAdapter()).create(); + final Gson gson = gsonProvider.getGson(); testRestTemplate = new TestRestTemplate( - new RestTemplateBuilder().additionalMessageConverters(new GsonHttpMessageConverter(gson))); + new RestTemplateBuilder().additionalMessageConverters(new GsonHttpMessageConverter(gsonProvider.getGson()))); } -- cgit 1.2.3-korg