From: Fiete Ostkamp Date: Fri, 25 Jul 2025 09:53:37 +0000 (+0200) Subject: Create common logging and clients-base modules X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F86%2F141586%2F2;p=so.git Create common logging and clients-base modules - move logging related classes from common/common into a common/logging module - move rest client related classes from common/common into a common/clients-base module Issue-ID: SO-4209 Change-Id: I5bd601eecf5ec24b8f12e54d737ec07fb08e55b5 Signed-off-by: Fiete Ostkamp --- diff --git a/adapters/etsi-sol002-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/ApplicationConfiguration.java b/adapters/etsi-sol002-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/ApplicationConfiguration.java index 38f7a0cd3f..a54750165b 100644 --- a/adapters/etsi-sol002-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/ApplicationConfiguration.java +++ b/adapters/etsi-sol002-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/ApplicationConfiguration.java @@ -29,7 +29,7 @@ import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContextBuilder; import org.onap.so.adapters.vevnfm.provider.AuthorizationHeadersProvider; -import org.onap.so.configuration.rest.HttpHeadersProvider; +import org.onap.so.configuration.HttpHeadersProvider; import org.onap.so.rest.service.HttpRestServiceProvider; import org.onap.so.rest.service.HttpRestServiceProviderImpl; import org.slf4j.Logger; diff --git a/adapters/etsi-sol002-adapter/src/main/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProvider.java b/adapters/etsi-sol002-adapter/src/main/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProvider.java index 838a67d115..3f956b5e6e 100644 --- a/adapters/etsi-sol002-adapter/src/main/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProvider.java +++ b/adapters/etsi-sol002-adapter/src/main/java/org/onap/so/adapters/vevnfm/provider/AuthorizationHeadersProvider.java @@ -21,7 +21,7 @@ package org.onap.so.adapters.vevnfm.provider; import org.apache.logging.log4j.util.Strings; -import org.onap.so.configuration.rest.BasicHttpHeadersProvider; +import org.onap.so.configuration.BasicHttpHeadersProvider; public class AuthorizationHeadersProvider extends BasicHttpHeadersProvider { diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java b/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java index 1a2e385121..4dd2123fca 100644 --- a/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/TestApplication.java @@ -7,9 +7,9 @@ * 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. @@ -33,7 +33,7 @@ import org.springframework.context.annotation.Profile; @Profile("test") @ComponentScan( basePackages = {"org.onap.so.asdc", "org.onap.so.security", "org.onap.so.rest.service", - "org.onap.so.configuration.rest", "org.onap.so.client"}, + "org.onap.so.configuration", "org.onap.so.client"}, excludeFilters = {@Filter(type = FilterType.ANNOTATION, classes = SpringBootApplication.class), @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = RequestsDBHelper.class), @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = InfraActiveRequestsRepositoryImpl.class)}) diff --git a/asdc-controller/src/test/resources/application-test.yaml b/asdc-controller/src/test/resources/application-test.yaml index e1fbe1ccd5..21d5fdf5fc 100644 --- a/asdc-controller/src/test/resources/application-test.yaml +++ b/asdc-controller/src/test/resources/application-test.yaml @@ -10,9 +10,9 @@ spring: jdbc-url: jdbc:mariadb://localhost:3307/catalogdb username: root password: password - driver-class-name: org.mariadb.jdbc.Driver + driver-class-name: org.mariadb.jdbc.Driver initialization-mode: always - jpa: + jpa: generate-ddl: false show-sql: true hibernate: @@ -22,17 +22,19 @@ spring: database-platform: org.hibernate.dialect.MySQL5InnoDBDialect security: usercredentials: - - + - username: test password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu' - role: Asdc-Client + role: Asdc-Client + sleuth: + enabled: false mariaDB4j: - dataDir: + dataDir: port: 3307 databaseName: catalogdb databaseName2: requestdb - + request: datasource: jdbc-url: jdbc:mariadb://localhost:3307/requestdb @@ -54,19 +56,19 @@ management: export: prometheus: enabled: true # Whether exporting of metrics to Prometheus is enabled. - step: 1m # Step size (i.e. reporting frequency) to use. + step: 1m # Step size (i.e. reporting frequency) to use. mso: adapters: requestDb: auth: Basic YnBlbDptc28tZGItMTUwNyE= - endpoint: http://localhost:8081 + endpoint: http://localhost:8081 logPath: logs catalog: db: spring: endpoint: "http://localhost:" - camundaURL: http://localhost:${wiremock.server.port}/ + camundaURL: http://localhost:${wiremock.server.port}/ db: auth: Basic YnBlbDptc28tZGItMTUwNyE= site-name: siteName @@ -82,7 +84,7 @@ mso: pollingTimeout: 30 relevantArtifactTypes: HEAT,HEAT_ENV,HEAT_VOL activateServerTLSAuth: false - keyStorePassword: + keyStorePassword: keyStorePath: watchDogTimeout: 1 isFilterInEmptyResources: true @@ -103,4 +105,3 @@ mso: sdc: endpoint: http://localhost:${wiremock.server.port} - \ No newline at end of file diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnfm/tasks/CnfmHttpServiceConfiguration.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnfm/tasks/CnfmHttpServiceConfiguration.java index 1028c28e77..4466bb2e0b 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnfm/tasks/CnfmHttpServiceConfiguration.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/cnfm/tasks/CnfmHttpServiceConfiguration.java @@ -22,7 +22,7 @@ package org.onap.so.bpmn.infrastructure.adapter.cnfm.tasks; import javax.ws.rs.core.MediaType; import org.onap.logging.filter.spring.SpringClientPayloadFilter; -import org.onap.so.configuration.rest.HttpComponentsClientConfiguration; +import org.onap.so.configuration.HttpComponentsClientConfiguration; import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter; import org.onap.so.rest.service.HttpRestServiceProvider; import org.onap.so.rest.service.HttpRestServiceProviderImpl; diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/VnfmAdapterCreateVnfTaskConfiguration.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/VnfmAdapterCreateVnfTaskConfiguration.java index fc3d6ab96c..1210a756f5 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/VnfmAdapterCreateVnfTaskConfiguration.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/vnfm/tasks/VnfmAdapterCreateVnfTaskConfiguration.java @@ -33,8 +33,8 @@ import org.apache.http.client.HttpClient; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContextBuilder; -import org.onap.so.configuration.rest.BasicHttpHeadersProvider; -import org.onap.so.configuration.rest.HttpHeadersProvider; +import org.onap.so.configuration.BasicHttpHeadersProvider; +import org.onap.so.configuration.HttpHeadersProvider; import org.onap.so.rest.service.HttpRestServiceProvider; import org.onap.so.rest.service.HttpRestServiceProviderImpl; import org.slf4j.Logger; @@ -52,7 +52,7 @@ import org.springframework.web.client.RestTemplate; /** * Provides {@link org.onap.so.rest.service.VnfmAdapterServiceProvider} configuration for * {@link VnfmAdapterCreateVnfTask} - * + * * @author waqas.ikram@est.tech */ @Configuration diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/cnfm/tasks/CnfmHttpServiceConfigurationTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/cnfm/tasks/CnfmHttpServiceConfigurationTest.java index 48325972ec..e21f2334e2 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/cnfm/tasks/CnfmHttpServiceConfigurationTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/cnfm/tasks/CnfmHttpServiceConfigurationTest.java @@ -27,7 +27,7 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; -import org.onap.so.configuration.rest.HttpComponentsClientConfiguration; +import org.onap.so.configuration.HttpComponentsClientConfiguration; import org.onap.so.rest.service.HttpRestServiceProvider; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/policy/CommonObjectMapperProviderTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/policy/CommonObjectMapperProviderTest.java index 2ff0d1d281..541dc9edc5 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/policy/CommonObjectMapperProviderTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/policy/CommonObjectMapperProviderTest.java @@ -7,9 +7,9 @@ * 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. @@ -23,6 +23,7 @@ package org.onap.so.client.policy; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; +import org.onap.so.client.CommonObjectMapperProvider; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.MapperFeature; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/common/clients-base/pom.xml b/common/clients-base/pom.xml new file mode 100644 index 0000000000..44be628d69 --- /dev/null +++ b/common/clients-base/pom.xml @@ -0,0 +1,80 @@ + + + 4.0.0 + + org.onap.so + common + 1.16.0-SNAPSHOT + + clients-base + + + + + org.onap.so + logger + ${project.version} + + + javax.cache + cache-api + 1.1.0 + + + org.javatuples + javatuples + 1.2 + + + net.jodah + failsafe + 2.0.1 + + + org.apache.httpcomponents + httpclient + + + org.mockito + mockito-junit-jupiter + test + + + org.springframework.boot + spring-boot-starter-test + test + + + org.projectlombok + lombok + provided + + + org.junit.jupiter + junit-jupiter-engine + test + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + + + maven-surefire-plugin + 3.1.2 + + + DEBUG + + + + + + + diff --git a/common/common/src/main/java/org/onap/so/client/AddCacheHeaders.java b/common/clients-base/src/main/java/org/onap/so/client/AddCacheHeaders.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/AddCacheHeaders.java rename to common/clients-base/src/main/java/org/onap/so/client/AddCacheHeaders.java diff --git a/common/common/src/main/java/org/onap/so/client/BaseClient.java b/common/clients-base/src/main/java/org/onap/so/client/BaseClient.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/BaseClient.java rename to common/clients-base/src/main/java/org/onap/so/client/BaseClient.java diff --git a/common/common/src/main/java/org/onap/so/client/CacheFactory.java b/common/clients-base/src/main/java/org/onap/so/client/CacheFactory.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/CacheFactory.java rename to common/clients-base/src/main/java/org/onap/so/client/CacheFactory.java diff --git a/common/common/src/main/java/org/onap/so/client/CacheProperties.java b/common/clients-base/src/main/java/org/onap/so/client/CacheProperties.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/CacheProperties.java rename to common/clients-base/src/main/java/org/onap/so/client/CacheProperties.java diff --git a/common/common/src/main/java/org/onap/so/client/policy/CommonObjectMapperProvider.java b/common/clients-base/src/main/java/org/onap/so/client/CommonObjectMapperProvider.java similarity index 98% rename from common/common/src/main/java/org/onap/so/client/policy/CommonObjectMapperProvider.java rename to common/clients-base/src/main/java/org/onap/so/client/CommonObjectMapperProvider.java index b9897d90f1..5dbe66c990 100644 --- a/common/common/src/main/java/org/onap/so/client/policy/CommonObjectMapperProvider.java +++ b/common/clients-base/src/main/java/org/onap/so/client/CommonObjectMapperProvider.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.so.client.policy; +package org.onap.so.client; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; diff --git a/common/common/src/main/java/org/onap/so/client/DefaultProperties.java b/common/clients-base/src/main/java/org/onap/so/client/DefaultProperties.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/DefaultProperties.java rename to common/clients-base/src/main/java/org/onap/so/client/DefaultProperties.java diff --git a/common/common/src/main/java/org/onap/so/client/HttpClient.java b/common/clients-base/src/main/java/org/onap/so/client/HttpClient.java similarity index 96% rename from common/common/src/main/java/org/onap/so/client/HttpClient.java rename to common/clients-base/src/main/java/org/onap/so/client/HttpClient.java index 0420ab2373..8371c3bd5c 100644 --- a/common/common/src/main/java/org/onap/so/client/HttpClient.java +++ b/common/clients-base/src/main/java/org/onap/so/client/HttpClient.java @@ -20,7 +20,6 @@ package org.onap.so.client; -import static org.apache.commons.lang3.StringUtils.isNotBlank; import java.net.URL; import java.util.Optional; import javax.ws.rs.core.MultivaluedMap; @@ -59,7 +58,7 @@ public class HttpClient extends RestClient { /** * Adds a basic authentication header to the request. - * + * * @param auth the encrypted credentials * @param key the key for decrypting the credentials */ @@ -74,7 +73,7 @@ public class HttpClient extends RestClient { /** * Adds an additional header to the header map - * + * * @param encoded basic auth value */ public void addAdditionalHeader(String name, String value) { @@ -101,4 +100,8 @@ public class HttpClient extends RestClient { } } + private static boolean isNotBlank(String str) { + return str != null && !str.trim().isEmpty(); + } + } diff --git a/common/common/src/main/java/org/onap/so/client/HttpClientFactory.java b/common/clients-base/src/main/java/org/onap/so/client/HttpClientFactory.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/HttpClientFactory.java rename to common/clients-base/src/main/java/org/onap/so/client/HttpClientFactory.java diff --git a/common/common/src/main/java/org/onap/so/client/KeyStoreLoader.java b/common/clients-base/src/main/java/org/onap/so/client/KeyStoreLoader.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/KeyStoreLoader.java rename to common/clients-base/src/main/java/org/onap/so/client/KeyStoreLoader.java diff --git a/common/common/src/main/java/org/onap/so/client/PreconditionFailedException.java b/common/clients-base/src/main/java/org/onap/so/client/PreconditionFailedException.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/PreconditionFailedException.java rename to common/clients-base/src/main/java/org/onap/so/client/PreconditionFailedException.java diff --git a/common/common/src/main/java/org/onap/so/client/ResponseExceptionMapper.java b/common/clients-base/src/main/java/org/onap/so/client/ResponseExceptionMapper.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/ResponseExceptionMapper.java rename to common/clients-base/src/main/java/org/onap/so/client/ResponseExceptionMapper.java diff --git a/common/common/src/main/java/org/onap/so/client/ResponseExceptionMapperImpl.java b/common/clients-base/src/main/java/org/onap/so/client/ResponseExceptionMapperImpl.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/ResponseExceptionMapperImpl.java rename to common/clients-base/src/main/java/org/onap/so/client/ResponseExceptionMapperImpl.java diff --git a/common/common/src/main/java/org/onap/so/client/RestClient.java b/common/clients-base/src/main/java/org/onap/so/client/RestClient.java similarity index 99% rename from common/common/src/main/java/org/onap/so/client/RestClient.java rename to common/clients-base/src/main/java/org/onap/so/client/RestClient.java index 0df378db66..caa435c2b2 100644 --- a/common/common/src/main/java/org/onap/so/client/RestClient.java +++ b/common/clients-base/src/main/java/org/onap/so/client/RestClient.java @@ -49,7 +49,6 @@ import org.javatuples.Pair; import org.onap.logging.filter.base.MDCSetup; import org.onap.logging.filter.base.ONAPComponentsList; import org.onap.logging.filter.base.PayloadLoggingClientFilter; -import org.onap.so.client.policy.CommonObjectMapperProvider; import org.onap.so.logging.jaxrs.filter.SOMetricLogClientFilter; import org.onap.so.utils.CryptoUtils; import org.slf4j.Logger; @@ -170,7 +169,7 @@ public abstract class RestClient { /** * Adds a basic authentication header to the request. - * + * * @param auth the encrypted credentials * @param key the key for decrypting the credentials */ diff --git a/common/common/src/main/java/org/onap/so/client/RestClientSSL.java b/common/clients-base/src/main/java/org/onap/so/client/RestClientSSL.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/RestClientSSL.java rename to common/clients-base/src/main/java/org/onap/so/client/RestClientSSL.java diff --git a/common/common/src/main/java/org/onap/so/client/RestProperties.java b/common/clients-base/src/main/java/org/onap/so/client/RestProperties.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/RestProperties.java rename to common/clients-base/src/main/java/org/onap/so/client/RestProperties.java diff --git a/common/common/src/main/java/org/onap/so/client/RestPropertiesLoader.java b/common/clients-base/src/main/java/org/onap/so/client/RestPropertiesLoader.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/RestPropertiesLoader.java rename to common/clients-base/src/main/java/org/onap/so/client/RestPropertiesLoader.java diff --git a/common/common/src/main/java/org/onap/so/client/RestRequest.java b/common/clients-base/src/main/java/org/onap/so/client/RestRequest.java similarity index 100% rename from common/common/src/main/java/org/onap/so/client/RestRequest.java rename to common/clients-base/src/main/java/org/onap/so/client/RestRequest.java diff --git a/common/common/src/main/java/org/onap/so/client/RestTemplateConfig.java b/common/clients-base/src/main/java/org/onap/so/client/RestTemplateConfig.java similarity index 97% rename from common/common/src/main/java/org/onap/so/client/RestTemplateConfig.java rename to common/clients-base/src/main/java/org/onap/so/client/RestTemplateConfig.java index e378a4ee48..2dc00dc177 100644 --- a/common/common/src/main/java/org/onap/so/client/RestTemplateConfig.java +++ b/common/clients-base/src/main/java/org/onap/so/client/RestTemplateConfig.java @@ -21,7 +21,7 @@ package org.onap.so.client; import org.onap.logging.filter.spring.SpringClientPayloadFilter; -import org.onap.so.configuration.rest.HttpComponentsClientConfiguration; +import org.onap.so.configuration.HttpComponentsClientConfiguration; import org.onap.so.logging.jaxrs.filter.SOSpringClientFilter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; diff --git a/common/common/src/main/java/org/onap/so/configuration/rest/BasicHttpHeadersProvider.java b/common/clients-base/src/main/java/org/onap/so/configuration/BasicHttpHeadersProvider.java similarity index 97% rename from common/common/src/main/java/org/onap/so/configuration/rest/BasicHttpHeadersProvider.java rename to common/clients-base/src/main/java/org/onap/so/configuration/BasicHttpHeadersProvider.java index 7606f3a8d3..2cd925e2b5 100644 --- a/common/common/src/main/java/org/onap/so/configuration/rest/BasicHttpHeadersProvider.java +++ b/common/clients-base/src/main/java/org/onap/so/configuration/BasicHttpHeadersProvider.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.so.configuration.rest; +package org.onap.so.configuration; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; diff --git a/common/common/src/main/java/org/onap/so/configuration/rest/HttpClientConnectionConfiguration.java b/common/clients-base/src/main/java/org/onap/so/configuration/HttpClientConnectionConfiguration.java similarity index 98% rename from common/common/src/main/java/org/onap/so/configuration/rest/HttpClientConnectionConfiguration.java rename to common/clients-base/src/main/java/org/onap/so/configuration/HttpClientConnectionConfiguration.java index b17b1fe0fe..88c5f6be8f 100644 --- a/common/common/src/main/java/org/onap/so/configuration/rest/HttpClientConnectionConfiguration.java +++ b/common/clients-base/src/main/java/org/onap/so/configuration/HttpClientConnectionConfiguration.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.so.configuration.rest; +package org.onap.so.configuration; import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Value; @@ -26,7 +26,7 @@ import org.springframework.stereotype.Service; /** * This class is used configure the parameters needed for {@link org.apache.http.impl.client.CloseableHttpClient} - * + * * @author waqas.ikram@est.tech */ @Service diff --git a/common/common/src/main/java/org/onap/so/configuration/rest/HttpComponentsClientConfiguration.java b/common/clients-base/src/main/java/org/onap/so/configuration/HttpComponentsClientConfiguration.java similarity index 98% rename from common/common/src/main/java/org/onap/so/configuration/rest/HttpComponentsClientConfiguration.java rename to common/clients-base/src/main/java/org/onap/so/configuration/HttpComponentsClientConfiguration.java index aef2ed165e..7a3862eb41 100644 --- a/common/common/src/main/java/org/onap/so/configuration/rest/HttpComponentsClientConfiguration.java +++ b/common/clients-base/src/main/java/org/onap/so/configuration/HttpComponentsClientConfiguration.java @@ -5,20 +5,20 @@ * 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.configuration.rest; +package org.onap.so.configuration; import java.util.concurrent.TimeUnit; import org.apache.http.client.config.RequestConfig; @@ -33,7 +33,7 @@ import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; /** * Allow user to configure {@link org.apache.http.client.HttpClient} - * + * * @author waqas.ikram@est.tech */ @Configuration diff --git a/common/common/src/main/java/org/onap/so/configuration/rest/HttpHeadersProvider.java b/common/clients-base/src/main/java/org/onap/so/configuration/HttpHeadersProvider.java similarity index 96% rename from common/common/src/main/java/org/onap/so/configuration/rest/HttpHeadersProvider.java rename to common/clients-base/src/main/java/org/onap/so/configuration/HttpHeadersProvider.java index 0cff7b4ba0..4f5f790c12 100644 --- a/common/common/src/main/java/org/onap/so/configuration/rest/HttpHeadersProvider.java +++ b/common/clients-base/src/main/java/org/onap/so/configuration/HttpHeadersProvider.java @@ -18,13 +18,13 @@ * ============LICENSE_END========================================================= */ -package org.onap.so.configuration.rest; +package org.onap.so.configuration; import org.springframework.http.HttpHeaders; /** * Providers {@link org.springframework.http.HttpHeaders} for HTTP requests - * + * * @author waqas.ikram@est.tech * */ diff --git a/common/common/src/main/java/org/onap/so/logging/jaxrs/filter/SOAuditLogContainerFilter.java b/common/clients-base/src/main/java/org/onap/so/logging/jaxrs/filter/SOAuditLogContainerFilter.java similarity index 100% rename from common/common/src/main/java/org/onap/so/logging/jaxrs/filter/SOAuditLogContainerFilter.java rename to common/clients-base/src/main/java/org/onap/so/logging/jaxrs/filter/SOAuditLogContainerFilter.java diff --git a/common/common/src/main/java/org/onap/so/logging/jaxrs/filter/SOMetricLogClientFilter.java b/common/clients-base/src/main/java/org/onap/so/logging/jaxrs/filter/SOMetricLogClientFilter.java similarity index 100% rename from common/common/src/main/java/org/onap/so/logging/jaxrs/filter/SOMetricLogClientFilter.java rename to common/clients-base/src/main/java/org/onap/so/logging/jaxrs/filter/SOMetricLogClientFilter.java diff --git a/common/common/src/main/java/org/onap/so/logging/jaxrs/filter/SOSpringClientFilter.java b/common/clients-base/src/main/java/org/onap/so/logging/jaxrs/filter/SOSpringClientFilter.java similarity index 100% rename from common/common/src/main/java/org/onap/so/logging/jaxrs/filter/SOSpringClientFilter.java rename to common/clients-base/src/main/java/org/onap/so/logging/jaxrs/filter/SOSpringClientFilter.java diff --git a/common/clients-base/src/main/java/org/onap/so/utils/CryptoUtils.java b/common/clients-base/src/main/java/org/onap/so/utils/CryptoUtils.java new file mode 100644 index 0000000000..e7bfe438a4 --- /dev/null +++ b/common/clients-base/src/main/java/org/onap/so/utils/CryptoUtils.java @@ -0,0 +1,137 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright (c) 2019 Samsung + * ================================================================================ + * 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.so.utils; + + +import org.onap.logging.filter.base.ErrorCode; +import org.onap.so.logger.LoggingAnchor; +import org.onap.so.logger.MessageEnum; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import javax.crypto.Cipher; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import java.security.GeneralSecurityException; +import java.security.SecureRandom; +import java.util.Arrays; + + +/** + * CryptoUtils adapted from RTTP client. + * + */ +public final class CryptoUtils { + + private static final Logger logger = LoggerFactory.getLogger(CryptoUtils.class); + + + private static final String AES = "AES"; + private static final String CLOUD_KEY = "aa3871669d893c7fb8abbcda31b88b4f"; + private static final int GCM_TAG_LENGTH = 16; + private static final int GCM_IV_LENGTH = 12; + private static final String AES_GCM_NO_PADDING = "AES/GCM/NoPadding"; + + /** + * encrypt a value and generate a keyfile if the keyfile is not found then a new one is created + * + * @throws GeneralSecurityException + */ + public static String encrypt(String value, String keyString) throws GeneralSecurityException { + SecretKeySpec sks = getSecretKeySpec(keyString); + Cipher cipher = Cipher.getInstance(AES_GCM_NO_PADDING); + byte[] initVector = new byte[GCM_IV_LENGTH]; + (new SecureRandom()).nextBytes(initVector); + GCMParameterSpec spec = new GCMParameterSpec(GCM_TAG_LENGTH * java.lang.Byte.SIZE, initVector); + cipher.init(Cipher.ENCRYPT_MODE, sks, spec); + byte[] encoded = value.getBytes(java.nio.charset.StandardCharsets.UTF_8); + byte[] cipherText = new byte[initVector.length + cipher.getOutputSize(encoded.length)]; + System.arraycopy(initVector, 0, cipherText, 0, initVector.length); + cipher.doFinal(encoded, 0, encoded.length, cipherText, initVector.length); + return byteArrayToHexString(cipherText); + } + + /** + * decrypt a value + * + * @throws GeneralSecurityException + */ + public static String decrypt(String message, String keyString) throws GeneralSecurityException { + if (message.equals(System.getenv("PLAINTEXTPASSWORD"))) + return message; + SecretKeySpec sks = getSecretKeySpec(keyString); + byte[] cipherText = hexStringToByteArray(message); + Cipher cipher = Cipher.getInstance(AES_GCM_NO_PADDING); + byte[] initVector = Arrays.copyOfRange(cipherText, 0, GCM_IV_LENGTH); + GCMParameterSpec spec = new GCMParameterSpec(GCM_TAG_LENGTH * java.lang.Byte.SIZE, initVector); + cipher.init(Cipher.DECRYPT_MODE, sks, spec); + byte[] plaintext = cipher.doFinal(cipherText, GCM_IV_LENGTH, cipherText.length - GCM_IV_LENGTH); + return new String(plaintext); + } + + public static String encryptCloudConfigPassword(String message) { + try { + return CryptoUtils.encrypt(message, CLOUD_KEY); + } catch (GeneralSecurityException e) { + logger.error(LoggingAnchor.THREE, MessageEnum.RA_GENERAL_EXCEPTION.toString(), + ErrorCode.BusinessProcessError.getValue(), "Exception in encryptPassword ", e); + return null; + } + } + + public static String decryptCloudConfigPassword(String message) { + try { + return CryptoUtils.decrypt(message, CLOUD_KEY); + } catch (GeneralSecurityException e) { + logger.error(LoggingAnchor.THREE, MessageEnum.RA_GENERAL_EXCEPTION.toString(), + ErrorCode.BusinessProcessError.getValue(), "Exception in encryptPassword ", e); + return null; + } + } + + private static SecretKeySpec getSecretKeySpec(String keyString) { + byte[] key = hexStringToByteArray(keyString); + return new SecretKeySpec(key, AES); + } + + public static String byteArrayToHexString(byte[] b) { + StringBuilder sb = new StringBuilder(b.length * 2); + for (byte aB : b) { + int v = aB & 0xff; + if (v < 16) { + sb.append('0'); + } + sb.append(Integer.toHexString(v)); + } + return sb.toString().toUpperCase(); + } + + private static byte[] hexStringToByteArray(String s) { + byte[] b = new byte[s.length() / 2]; + for (int i = 0; i < b.length; i++) { + int index = i * 2; + int v = Integer.parseInt(s.substring(index, index + 2), 16); + b[i] = (byte) v; + } + return b; + } +} diff --git a/common/clients-base/src/test/java/org/onap/so/client/AddCacheHeadersTest.java b/common/clients-base/src/test/java/org/onap/so/client/AddCacheHeadersTest.java new file mode 100644 index 0000000000..ee7ae61355 --- /dev/null +++ b/common/clients-base/src/test/java/org/onap/so/client/AddCacheHeadersTest.java @@ -0,0 +1,98 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright © 2025 Deutsche Telekom AG 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.so.client; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.mockito.Mockito.when; +import java.util.Collections; +import java.util.List; +import javax.ws.rs.client.ClientRequestContext; +import javax.ws.rs.client.ClientResponseContext; +import javax.ws.rs.core.MultivaluedHashMap; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import lombok.SneakyThrows; + +@ExtendWith(MockitoExtension.class) +public class AddCacheHeadersTest { + + @Mock + ClientRequestContext request; + + @Mock + ClientResponseContext response; + + private final AddCacheHeaders addCacheHeaders = new AddCacheHeaders(new CachePropertiesImpl()); + + @Test + @SneakyThrows + public void thatCacheHeaderIsAddedForGet() { + MultivaluedHashMap headers = new MultivaluedHashMap<>(); + when(request.getMethod()).thenReturn("GET"); + when(response.getHeaders()).thenReturn(headers); + + addCacheHeaders.filter(request, response); + assertTrue(headers.containsKey("Cache-Control")); + assertEquals(Collections.singletonList("public, max-age=" + (new CachePropertiesImpl().getMaxAge() / 1000)), + headers.get("Cache-Control")); + } + + @Test + @SneakyThrows + public void thatCacheHeaderIsNotOverwrittenForGet() { + MultivaluedHashMap headers = new MultivaluedHashMap<>(); + List expected = Collections.singletonList("foo"); + headers.put("Cache-Control", expected); + when(request.getMethod()).thenReturn("GET"); + when(response.getHeaders()).thenReturn(headers); + + addCacheHeaders.filter(request, response); + assertTrue(headers.containsKey("Cache-Control")); + assertEquals(expected, headers.get("Cache-Control")); + } + + @Test + @SneakyThrows + public void thatCacheHeaderIsNotAddedForOtherMethods() { + MultivaluedHashMap headers = new MultivaluedHashMap<>(); + when(request.getMethod()).thenReturn("PUT"); + + addCacheHeaders.filter(request, response); + assertFalse(headers.containsKey("Cache-Control")); + } + + class CachePropertiesImpl implements CacheProperties { + + @Override + public String getCacheName() { + return "test-cache"; + } + + @Override + public Long getMaxAge() { + return 5 * 60 * 1000L; + } + + } +} diff --git a/common/common/src/test/java/org/onap/so/configuration/rest/BasicHttpHeadersProviderTest.java b/common/clients-base/src/test/java/org/onap/so/configuration/BasicHttpHeadersProviderTest.java similarity index 90% rename from common/common/src/test/java/org/onap/so/configuration/rest/BasicHttpHeadersProviderTest.java rename to common/clients-base/src/test/java/org/onap/so/configuration/BasicHttpHeadersProviderTest.java index cab39824b0..c7637de463 100644 --- a/common/common/src/test/java/org/onap/so/configuration/rest/BasicHttpHeadersProviderTest.java +++ b/common/clients-base/src/test/java/org/onap/so/configuration/BasicHttpHeadersProviderTest.java @@ -18,13 +18,15 @@ * ============LICENSE_END========================================================= */ -package org.onap.so.configuration.rest; +package org.onap.so.configuration; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; -import static org.onap.so.configuration.rest.BasicHttpHeadersProvider.AUTHORIZATION_HEADER; +import static org.onap.so.configuration.BasicHttpHeadersProvider.AUTHORIZATION_HEADER; import java.util.Arrays; import org.junit.Test; +import org.onap.so.configuration.BasicHttpHeadersProvider; +import org.onap.so.configuration.HttpHeadersProvider; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; diff --git a/common/common/src/test/java/org/onap/so/configuration/rest/HttpComponentsClientConfigurationTest.java b/common/clients-base/src/test/java/org/onap/so/configuration/HttpComponentsClientConfigurationTest.java similarity index 97% rename from common/common/src/test/java/org/onap/so/configuration/rest/HttpComponentsClientConfigurationTest.java rename to common/clients-base/src/test/java/org/onap/so/configuration/HttpComponentsClientConfigurationTest.java index 4b054ff7d1..fa72a25497 100644 --- a/common/common/src/test/java/org/onap/so/configuration/rest/HttpComponentsClientConfigurationTest.java +++ b/common/clients-base/src/test/java/org/onap/so/configuration/HttpComponentsClientConfigurationTest.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.so.configuration.rest; +package org.onap.so.configuration; import static org.junit.Assert.assertNotNull; import org.junit.Test; diff --git a/common/common/src/test/java/org/onap/so/logging/MaskLogStatementsTest.java b/common/clients-base/src/test/java/org/onap/so/logging/MaskLogStatementsTest.java similarity index 100% rename from common/common/src/test/java/org/onap/so/logging/MaskLogStatementsTest.java rename to common/clients-base/src/test/java/org/onap/so/logging/MaskLogStatementsTest.java diff --git a/common/common/pom.xml b/common/common/pom.xml index f38fcc8849..718bfae488 100644 --- a/common/common/pom.xml +++ b/common/common/pom.xml @@ -19,6 +19,16 @@ 1.2.13 + + org.onap.so + logger + ${project.version} + + + org.onap.so + clients-base + ${project.version} + org.apache.httpcomponents httpclient @@ -104,11 +114,6 @@ org.springframework.retry spring-retry - - net.jodah - failsafe - 2.0.1 - org.mockito mockito-core @@ -183,11 +188,6 @@ ${grpc.version} test - - org.javatuples - javatuples - 1.2 - org.camunda.bpm camunda-external-task-client @@ -241,11 +241,6 @@ jaxb-impl 2.3.0 - - javax.cache - cache-api - 1.1.0 - org.springframework.cloud spring-cloud-starter-sleuth diff --git a/common/common/src/main/java/org/onap/so/client/adapter/rest/AdapterRestClient.java b/common/common/src/main/java/org/onap/so/client/adapter/rest/AdapterRestClient.java index 3bac3dc210..1d2d892007 100644 --- a/common/common/src/main/java/org/onap/so/client/adapter/rest/AdapterRestClient.java +++ b/common/common/src/main/java/org/onap/so/client/adapter/rest/AdapterRestClient.java @@ -7,9 +7,9 @@ * 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. @@ -27,8 +27,8 @@ import javax.ws.rs.core.MultivaluedMap; import org.apache.commons.codec.binary.Base64; import org.javatuples.Pair; import org.onap.logging.filter.base.ONAPComponents; +import org.onap.so.client.CommonObjectMapperProvider; import org.onap.so.client.RestClient; -import org.onap.so.client.policy.CommonObjectMapperProvider; import org.onap.so.client.policy.JettisonStyleMapperProvider; import org.onap.so.utils.CryptoUtils; diff --git a/common/common/src/main/java/org/onap/so/client/policy/JettisonStyleMapperProvider.java b/common/common/src/main/java/org/onap/so/client/policy/JettisonStyleMapperProvider.java index 34b121366b..0eed8b1bc6 100644 --- a/common/common/src/main/java/org/onap/so/client/policy/JettisonStyleMapperProvider.java +++ b/common/common/src/main/java/org/onap/so/client/policy/JettisonStyleMapperProvider.java @@ -7,9 +7,9 @@ * 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. @@ -20,6 +20,7 @@ package org.onap.so.client.policy; +import org.onap.so.client.CommonObjectMapperProvider; import org.springframework.stereotype.Component; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.DeserializationFeature; diff --git a/common/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java b/common/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java index 04dd0bbb7a..489db5b3fa 100644 --- a/common/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java +++ b/common/common/src/main/java/org/onap/so/rest/service/HttpRestServiceProviderImpl.java @@ -20,7 +20,7 @@ package org.onap.so.rest.service; -import org.onap.so.configuration.rest.HttpHeadersProvider; +import org.onap.so.configuration.HttpHeadersProvider; import org.onap.so.rest.exceptions.HttpResouceNotFoundException; import org.onap.so.rest.exceptions.InvalidRestRequestException; import org.onap.so.rest.exceptions.RestProcessingException; @@ -58,7 +58,7 @@ public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { } /** - * + * * @deprecated this constructor is deprecated in favor of using {@link HttpRestServiceProviderImpl(RestTemplate * restTemplate, HttpHeaders defaultHttpHeaders)} */ diff --git a/common/common/src/main/java/org/onap/so/utils/CryptoUtils.java b/common/common/src/main/java/org/onap/so/utils/CryptoUtils.java index eecee4c83f..e7bfe438a4 100644 --- a/common/common/src/main/java/org/onap/so/utils/CryptoUtils.java +++ b/common/common/src/main/java/org/onap/so/utils/CryptoUtils.java @@ -9,9 +9,9 @@ * 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. @@ -23,8 +23,8 @@ package org.onap.so.utils; -import org.onap.so.logger.LoggingAnchor; import org.onap.logging.filter.base.ErrorCode; +import org.onap.so.logger.LoggingAnchor; import org.onap.so.logger.MessageEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +38,7 @@ import java.util.Arrays; /** * CryptoUtils adapted from RTTP client. - * + * */ public final class CryptoUtils { @@ -53,7 +53,7 @@ public final class CryptoUtils { /** * encrypt a value and generate a keyfile if the keyfile is not found then a new one is created - * + * * @throws GeneralSecurityException */ public static String encrypt(String value, String keyString) throws GeneralSecurityException { @@ -72,7 +72,7 @@ public final class CryptoUtils { /** * decrypt a value - * + * * @throws GeneralSecurityException */ public static String decrypt(String message, String keyString) throws GeneralSecurityException { diff --git a/common/common/src/main/java/org/onap/so/utils/UUIDChecker.java b/common/common/src/main/java/org/onap/so/utils/UUIDChecker.java index 30fc92bf49..b2b76b5a7b 100644 --- a/common/common/src/main/java/org/onap/so/utils/UUIDChecker.java +++ b/common/common/src/main/java/org/onap/so/utils/UUIDChecker.java @@ -10,9 +10,9 @@ * 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. diff --git a/common/common/src/main/java/org/onap/so/utils/XmlMarshaller.java b/common/common/src/main/java/org/onap/so/utils/XmlMarshaller.java index 3ae644be6b..79fdbf957f 100644 --- a/common/common/src/main/java/org/onap/so/utils/XmlMarshaller.java +++ b/common/common/src/main/java/org/onap/so/utils/XmlMarshaller.java @@ -9,9 +9,9 @@ * 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. @@ -32,10 +32,10 @@ import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import javax.xml.parsers.SAXParserFactory; import javax.xml.transform.sax.SAXSource; -import org.onap.so.logger.LoggingAnchor; import org.onap.so.exceptions.MarshallerException; -import org.onap.logging.filter.base.ErrorCode; +import org.onap.so.logger.LoggingAnchor; import org.onap.so.logger.MessageEnum; +import org.onap.logging.filter.base.ErrorCode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.InputSource; diff --git a/common/logger/pom.xml b/common/logger/pom.xml new file mode 100644 index 0000000000..8c20344af0 --- /dev/null +++ b/common/logger/pom.xml @@ -0,0 +1,83 @@ + + + 4.0.0 + + org.onap.so + common + 1.16.0-SNAPSHOT + + logger + + + + + org.springframework + spring-context + + + ch.qos.logback + logback-classic + + + ch.qos.logback + logback-core + + + org.mockito + mockito-junit-jupiter + test + + + org.springframework.boot + spring-boot-starter-test + test + + + org.projectlombok + lombok + provided + + + org.junit.jupiter + junit-jupiter-engine + test + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + + + + maven-surefire-plugin + 3.1.2 + + + DEBUG + + + + + org.jacoco + jacoco-maven-plugin + + + + org/onap/so/logger/HttpHeadersConstants + org/onap/so/logger/LogConstants + org/onap/so/logger/LoggingAnchor + org/onap/so/logger/MdcConstants + org/onap/so/logger/MessageEnum + + + + + + + diff --git a/common/common/src/main/java/org/onap/so/logger/HttpHeadersConstants.java b/common/logger/src/main/java/org/onap/so/logger/HttpHeadersConstants.java similarity index 99% rename from common/common/src/main/java/org/onap/so/logger/HttpHeadersConstants.java rename to common/logger/src/main/java/org/onap/so/logger/HttpHeadersConstants.java index 2010bc1988..65f6988f45 100644 --- a/common/common/src/main/java/org/onap/so/logger/HttpHeadersConstants.java +++ b/common/logger/src/main/java/org/onap/so/logger/HttpHeadersConstants.java @@ -7,9 +7,9 @@ * 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. diff --git a/common/common/src/main/java/org/onap/so/logger/LogConstants.java b/common/logger/src/main/java/org/onap/so/logger/LogConstants.java similarity index 99% rename from common/common/src/main/java/org/onap/so/logger/LogConstants.java rename to common/logger/src/main/java/org/onap/so/logger/LogConstants.java index 3dc0c062c6..a3a02d3a53 100644 --- a/common/common/src/main/java/org/onap/so/logger/LogConstants.java +++ b/common/logger/src/main/java/org/onap/so/logger/LogConstants.java @@ -7,9 +7,9 @@ * 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. diff --git a/common/common/src/main/java/org/onap/so/logger/LoggerStartupListener.java b/common/logger/src/main/java/org/onap/so/logger/LoggerStartupListener.java similarity index 100% rename from common/common/src/main/java/org/onap/so/logger/LoggerStartupListener.java rename to common/logger/src/main/java/org/onap/so/logger/LoggerStartupListener.java diff --git a/common/common/src/main/java/org/onap/so/logger/LoggingAnchor.java b/common/logger/src/main/java/org/onap/so/logger/LoggingAnchor.java similarity index 100% rename from common/common/src/main/java/org/onap/so/logger/LoggingAnchor.java rename to common/logger/src/main/java/org/onap/so/logger/LoggingAnchor.java diff --git a/common/common/src/main/java/org/onap/so/logger/MaskLogStatements.java b/common/logger/src/main/java/org/onap/so/logger/MaskLogStatements.java similarity index 85% rename from common/common/src/main/java/org/onap/so/logger/MaskLogStatements.java rename to common/logger/src/main/java/org/onap/so/logger/MaskLogStatements.java index cadadcf9f3..a5cae062dc 100644 --- a/common/common/src/main/java/org/onap/so/logger/MaskLogStatements.java +++ b/common/logger/src/main/java/org/onap/so/logger/MaskLogStatements.java @@ -15,8 +15,8 @@ public class MaskLogStatements extends PatternLayout { private String patternsProperty; private String maskChar = "*"; private Optional pattern = Optional.empty(); - private static final Pattern authPattern = - Pattern.compile("Authorization(?:\\:|=)\\s?(?:\"|\\[)(?:Basic|Bearer) (.*?)(?:\"|\\])"); + private static final String authPatternString = "Authorization[: ]+(?:Bearer|Basic)\\s(\\S+)"; + private static final Pattern authPattern = Pattern.compile(authPatternString); private static final Pattern openstackPattern = Pattern.compile("\"password\"\\s?:\\s?\"(.*?)\""); public String getPatternsProperty() { @@ -46,7 +46,8 @@ public class MaskLogStatements extends PatternLayout { @Override public String doLayout(ILoggingEvent event) { - final StringBuilder message = new StringBuilder(super.doLayout(event)); + // final StringBuilder message = new StringBuilder(super.doLayout(event)); + final StringBuilder message = new StringBuilder(event.getFormattedMessage()); List patterns = new ArrayList<>(getPatterns()); if (pattern.isPresent()) { patterns.add(pattern.get()); diff --git a/common/common/src/main/java/org/onap/so/logger/MdcConstants.java b/common/logger/src/main/java/org/onap/so/logger/MdcConstants.java similarity index 99% rename from common/common/src/main/java/org/onap/so/logger/MdcConstants.java rename to common/logger/src/main/java/org/onap/so/logger/MdcConstants.java index 4c6672e59f..8faedd9cb3 100644 --- a/common/common/src/main/java/org/onap/so/logger/MdcConstants.java +++ b/common/logger/src/main/java/org/onap/so/logger/MdcConstants.java @@ -7,9 +7,9 @@ * 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. diff --git a/common/common/src/main/java/org/onap/so/logger/MessageEnum.java b/common/logger/src/main/java/org/onap/so/logger/MessageEnum.java similarity index 99% rename from common/common/src/main/java/org/onap/so/logger/MessageEnum.java rename to common/logger/src/main/java/org/onap/so/logger/MessageEnum.java index bcf699beaf..4eb976bea6 100644 --- a/common/common/src/main/java/org/onap/so/logger/MessageEnum.java +++ b/common/logger/src/main/java/org/onap/so/logger/MessageEnum.java @@ -7,9 +7,9 @@ * 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. diff --git a/common/logger/src/test/java/org/onap/so/logger/LoggerStartupListenerTest.java b/common/logger/src/test/java/org/onap/so/logger/LoggerStartupListenerTest.java new file mode 100644 index 0000000000..8d079daad8 --- /dev/null +++ b/common/logger/src/test/java/org/onap/so/logger/LoggerStartupListenerTest.java @@ -0,0 +1,53 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright © 2025 Deutsche Telekom AG 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.so.logger; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; +import java.net.UnknownHostException; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import ch.qos.logback.core.Context; + +@ExtendWith(MockitoExtension.class) +public class LoggerStartupListenerTest { + + private LoggerStartupListener loggerStartupListener; + + @Mock + private Context context; + + @BeforeEach + public void setUp() { + loggerStartupListener = new LoggerStartupListener(); + loggerStartupListener.setContext(context); + } + + @Test + public void thatServerNameIsSetOnStartup() throws UnknownHostException { + loggerStartupListener.start(); + + verify(context).putProperty(eq("server.name"), anyString()); + assertTrue(loggerStartupListener.isStarted()); + } +} diff --git a/common/logger/src/test/java/org/onap/so/logger/MaskLogStatementsTest.java b/common/logger/src/test/java/org/onap/so/logger/MaskLogStatementsTest.java new file mode 100644 index 0000000000..a203252853 --- /dev/null +++ b/common/logger/src/test/java/org/onap/so/logger/MaskLogStatementsTest.java @@ -0,0 +1,31 @@ +package org.onap.so.logger; + +import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; +import ch.qos.logback.classic.spi.LoggingEvent; + +@ExtendWith(MockitoExtension.class) +public class MaskLogStatementsTest { + + private MaskLogStatements maskLogStatements; + + @BeforeEach + public void setUp() { + maskLogStatements = new MaskLogStatements(); + } + + @Test + public void testDoLayoutShouldMaskAuthorizationToken() { + String logMessage = "Authorization: Bearer mySecretToken123"; + + LoggingEvent loggingEvent = new LoggingEvent(); + loggingEvent.setMessage(logMessage); + + String maskedMessage = maskLogStatements.doLayout(loggingEvent); + + assertEquals("Authorization: Bearer ****************", maskedMessage); + } +} diff --git a/common/pom.xml b/common/pom.xml index 871c952956..7ee498cadb 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -9,6 +9,8 @@ common pom + logger + clients-base common diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/GraphInventoryCommonObjectMapperProvider.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/GraphInventoryCommonObjectMapperProvider.java index a780d79daa..d81847c5a5 100644 --- a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/GraphInventoryCommonObjectMapperProvider.java +++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/GraphInventoryCommonObjectMapperProvider.java @@ -20,7 +20,7 @@ package org.onap.aaiclient.client.graphinventory; -import org.onap.so.client.policy.CommonObjectMapperProvider; +import org.onap.so.client.CommonObjectMapperProvider; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.AnnotationIntrospector; diff --git a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/GraphInventoryRestClient.java b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/GraphInventoryRestClient.java index d02274ccf1..2c1d6bc420 100644 --- a/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/GraphInventoryRestClient.java +++ b/graph-inventory/aai-client/src/main/java/org/onap/aaiclient/client/graphinventory/GraphInventoryRestClient.java @@ -34,7 +34,8 @@ import org.onap.so.client.CacheFactory; import org.onap.so.client.ResponseExceptionMapper; import org.onap.so.client.RestClientSSL; import org.onap.so.client.RestProperties; -import org.onap.so.client.policy.CommonObjectMapperProvider; +import org.onap.so.client.CommonObjectMapperProvider; +import org.onap.so.objects.audit.AAIObjectAudit; public abstract class GraphInventoryRestClient extends RestClientSSL {