-Introduced org.onap.cps.ncmp.config for all config type classes like http, kafka etc.
-Introduced org.onap.cps.ncmp.impl.dmi for dmi specif classes like DmiRestClient etc.
-Moved most exception classes to org.onap.cps.ncmp.api.exceptions
(only two were 'internal' i.e. NOT used in REST so left in org.onap.cps.ncmp.exceptions)
-Deleted unused DateNodeHelper class (and related testware)
-Moved some classes to org.onap.cps.ncmp.impl.utils
-Moved messaging test base classes to org.onap.cps.ncmp.impl.utils.events
-All imports were reorganised automatically by IntelliJ
-did NOT update any copyright dates (seems incorrect to me anyway)
Issue-ID: CPS-2257
Change-Id: Ie28b1777ea278064b46c6a1c3a28f4d0696565e2
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
import org.onap.cps.ncmp.api.data.exceptions.InvalidDatastoreException;
import org.onap.cps.ncmp.api.data.exceptions.InvalidOperationException;
import org.onap.cps.ncmp.api.data.exceptions.OperationNotSupportedException;
-import org.onap.cps.ncmp.api.impl.exception.DmiClientRequestException;
-import org.onap.cps.ncmp.api.impl.exception.DmiRequestException;
-import org.onap.cps.ncmp.api.impl.exception.NcmpException;
-import org.onap.cps.ncmp.api.impl.exception.ServerNcmpException;
-import org.onap.cps.ncmp.exceptions.InvalidTopicException;
-import org.onap.cps.ncmp.exceptions.PayloadTooLargeException;
+import org.onap.cps.ncmp.api.exceptions.DmiClientRequestException;
+import org.onap.cps.ncmp.api.exceptions.DmiRequestException;
+import org.onap.cps.ncmp.api.exceptions.InvalidTopicException;
+import org.onap.cps.ncmp.api.exceptions.NcmpException;
+import org.onap.cps.ncmp.api.exceptions.PayloadTooLargeException;
+import org.onap.cps.ncmp.api.exceptions.ServerNcmpException;
import org.onap.cps.ncmp.rest.model.DmiErrorMessage;
import org.onap.cps.ncmp.rest.model.DmiErrorMessageDmiResponse;
import org.onap.cps.ncmp.rest.model.ErrorMessage;
import org.onap.cps.TestUtils
import org.onap.cps.ncmp.api.data.exceptions.InvalidOperationException
import org.onap.cps.ncmp.api.data.exceptions.OperationNotSupportedException
-import org.onap.cps.ncmp.api.impl.exception.DmiClientRequestException
-import org.onap.cps.ncmp.api.impl.exception.DmiRequestException
-import org.onap.cps.ncmp.api.impl.exception.ServerNcmpException
+import org.onap.cps.ncmp.api.exceptions.DmiClientRequestException
+import org.onap.cps.ncmp.api.exceptions.DmiRequestException
+import org.onap.cps.ncmp.api.exceptions.PayloadTooLargeException
+import org.onap.cps.ncmp.api.exceptions.ServerNcmpException
import org.onap.cps.ncmp.api.inventory.NetworkCmProxyInventoryFacade
-import org.onap.cps.ncmp.exceptions.PayloadTooLargeException
import org.onap.cps.ncmp.impl.data.NcmpCachedResourceRequestHandler
import org.onap.cps.ncmp.impl.data.NcmpPassthroughResourceRequestHandler
import org.onap.cps.ncmp.impl.data.NetworkCmProxyFacade
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.exception;
+package org.onap.cps.ncmp.api.exceptions;
import lombok.Getter;
import org.onap.cps.ncmp.api.NcmpResponseStatus;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.exception;
+package org.onap.cps.ncmp.api.exceptions;
/**
* Client Based Network CM Proxy exception.
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.exceptions;
+package org.onap.cps.ncmp.api.exceptions;
import lombok.Getter;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.exception;
+package org.onap.cps.ncmp.api.exceptions;
import lombok.Getter;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.exceptions;
+package org.onap.cps.ncmp.api.exceptions;
public class PayloadTooLargeException extends RuntimeException {
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.exception;
+package org.onap.cps.ncmp.api.exceptions;
/**
* Server Based Network CM Proxy exception.
+++ /dev/null
-/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2023 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.cps.ncmp.api.impl.utils;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.onap.cps.spi.model.DataNode;
-
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class DataNodeHelper {
-
- /**
- * The nested DataNode object is being flattened.
- *
- * @param dataNode object.
- * @return DataNode as stream.
- */
- public static Stream<DataNode> flatten(final DataNode dataNode) {
- return Stream.concat(Stream.of(dataNode),
- dataNode.getChildDataNodes().stream().flatMap(DataNodeHelper::flatten));
- }
-
- /**
- * The leaves for each DataNode is listed as map.
- *
- * @param dataNodes as collection
- * @return list of map for the all leaves
- */
- public static List<Map<String, Serializable>> getDataNodeLeaves(final Collection<DataNode> dataNodes) {
- return dataNodes.stream()
- .flatMap(DataNodeHelper::flatten)
- .map(DataNode::getLeaves)
- .collect(Collectors.toList());
- }
-
- /**
- * Extracts the mapping of cm handle id to status with details from nodes leaves.
- *
- * @param dataNodeLeaves as a list of map
- * @return cm handle id to status and details mapping
- */
- public static Map<String, Map<String, String>> cmHandleIdToStatusAndDetailsAsMap(
- final List<Map<String, Serializable>> dataNodeLeaves) {
- return dataNodeLeaves.stream()
- .filter(entryset -> entryset.values().contains("PENDING")
- || entryset.values().contains("ACCEPTED")
- || entryset.values().contains("REJECTED"))
- .collect(
- HashMap<String, Map<String, String>>::new,
- (result, entry) -> {
- final String cmHandleId = (String) entry.get("cmHandleId");
- final String status = (String) entry.get("status");
- final String details = (String) entry.get("details");
-
- if (cmHandleId != null && status != null) {
- result.put(cmHandleId, new HashMap<>());
- result.get(cmHandleId).put("status", status);
- result.get(cmHandleId).put("details", details == null ? "" : details);
- }
- },
- HashMap::putAll
- );
- }
-
- /**
- * Extracts the mapping of cm handle id to status with details from data node collection.
- *
- * @param dataNodes as a collection
- * @return cm handle id to status and details mapping
- */
- public static Map<String, Map<String, String>> cmHandleIdToStatusAndDetailsAsMapFromDataNode(
- final Collection<DataNode> dataNodes) {
- return cmHandleIdToStatusAndDetailsAsMap(getDataNodeLeaves(dataNodes));
- }
-}
import java.util.List;
import lombok.Getter;
import lombok.Setter;
-import org.onap.cps.ncmp.api.impl.exception.DmiRequestException;
-import org.onap.cps.ncmp.api.impl.exception.NcmpException;
+import org.onap.cps.ncmp.api.exceptions.DmiRequestException;
+import org.onap.cps.ncmp.api.exceptions.NcmpException;
/**
* Dmi Registry request object.
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.utils.context;
+package org.onap.cps.ncmp.config;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
private static synchronized void setCpsApplicationContext(final ApplicationContext cpsApplicationContext) {
CpsApplicationContext.applicationContext = cpsApplicationContext;
}
-}
\ No newline at end of file
+}
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config;
+package org.onap.cps.ncmp.config;
import lombok.Getter;
import lombok.Setter;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config.kafka;
+package org.onap.cps.ncmp.config;
import io.cloudevents.CloudEvent;
import io.opentelemetry.instrumentation.kafkaclients.v2_6.TracingConsumerInterceptor;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config;
+package org.onap.cps.ncmp.config;
import io.micrometer.observation.ObservationPredicate;
import io.micrometer.observation.ObservationRegistry;
}
};
}
-}
\ No newline at end of file
+}
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.exception;
+package org.onap.cps.ncmp.exceptions;
+
+import org.onap.cps.ncmp.api.exceptions.NcmpException;
/**
* NCMP start up exception.
public NcmpStartUpException(final String message, final String details) {
super(message, details);
}
-}
\ No newline at end of file
+}
package org.onap.cps.ncmp.exceptions;
import java.io.Serial;
-import org.onap.cps.ncmp.api.impl.exception.NcmpException;
+import org.onap.cps.ncmp.api.exceptions.NcmpException;
public class NoAlternateIdMatchFoundException extends NcmpException {
import org.onap.cps.ncmp.api.data.models.CmResourceAddress;
import org.onap.cps.ncmp.api.data.models.DataOperationRequest;
import org.onap.cps.ncmp.api.data.models.OperationType;
-import org.onap.cps.ncmp.api.impl.client.DmiRestClient;
-import org.onap.cps.ncmp.api.impl.config.DmiProperties;
-import org.onap.cps.ncmp.api.impl.exception.DmiClientRequestException;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.DmiServiceUrlTemplateBuilder;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters;
+import org.onap.cps.ncmp.api.exceptions.DmiClientRequestException;
import org.onap.cps.ncmp.impl.data.models.DmiDataOperation;
import org.onap.cps.ncmp.impl.data.models.DmiDataOperationRequest;
import org.onap.cps.ncmp.impl.data.models.DmiOperationCmHandle;
import org.onap.cps.ncmp.impl.data.utils.DmiDataOperationsHelper;
+import org.onap.cps.ncmp.impl.dmi.DmiProperties;
+import org.onap.cps.ncmp.impl.dmi.DmiRestClient;
+import org.onap.cps.ncmp.impl.dmi.DmiServiceUrlTemplateBuilder;
+import org.onap.cps.ncmp.impl.dmi.UrlTemplateParameters;
import org.onap.cps.ncmp.impl.inventory.InventoryPersistence;
import org.onap.cps.ncmp.impl.inventory.models.CmHandleState;
import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle;
import org.onap.cps.ncmp.api.data.models.DataOperationRequest;
import org.onap.cps.ncmp.api.data.models.DatastoreType;
import org.onap.cps.ncmp.api.data.models.OperationType;
-import org.onap.cps.ncmp.exceptions.PayloadTooLargeException;
+import org.onap.cps.ncmp.api.exceptions.PayloadTooLargeException;
import org.onap.cps.ncmp.utils.events.TopicValidator;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Mono;
import org.onap.cps.ncmp.api.NcmpResponseStatus;
import org.onap.cps.ncmp.api.data.models.DataOperationDefinition;
import org.onap.cps.ncmp.api.data.models.DataOperationRequest;
-import org.onap.cps.ncmp.api.impl.utils.DmiServiceNameOrganizer;
-import org.onap.cps.ncmp.api.impl.utils.context.CpsApplicationContext;
+import org.onap.cps.ncmp.config.CpsApplicationContext;
import org.onap.cps.ncmp.impl.data.models.DmiDataOperation;
import org.onap.cps.ncmp.impl.data.models.DmiOperationCmHandle;
+import org.onap.cps.ncmp.impl.dmi.DmiServiceNameOrganizer;
import org.onap.cps.ncmp.impl.inventory.models.CmHandleState;
import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle;
import org.springframework.util.LinkedMultiValueMap;
import org.onap.cps.ncmp.api.datajobs.models.ProducerKey;
import org.onap.cps.ncmp.api.datajobs.models.SubJobWriteRequest;
import org.onap.cps.ncmp.api.datajobs.models.SubJobWriteResponse;
-import org.onap.cps.ncmp.api.impl.client.DmiRestClient;
-import org.onap.cps.ncmp.api.impl.config.DmiProperties;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.DmiServiceUrlTemplateBuilder;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters;
+import org.onap.cps.ncmp.impl.dmi.DmiProperties;
+import org.onap.cps.ncmp.impl.dmi.DmiRestClient;
+import org.onap.cps.ncmp.impl.dmi.DmiServiceUrlTemplateBuilder;
+import org.onap.cps.ncmp.impl.dmi.UrlTemplateParameters;
import org.onap.cps.ncmp.impl.models.RequiredDmiService;
import org.onap.cps.utils.JsonObjectMapper;
import org.springframework.http.ResponseEntity;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config;
+package org.onap.cps.ncmp.impl.dmi;
import lombok.AccessLevel;
import lombok.Getter;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.client;
+package org.onap.cps.ncmp.impl.dmi;
import static org.onap.cps.ncmp.api.NcmpResponseStatus.DMI_SERVICE_NOT_RESPONDING;
import static org.onap.cps.ncmp.api.NcmpResponseStatus.UNABLE_TO_READ_RESOURCE_DATA;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.onap.cps.ncmp.api.data.models.OperationType;
-import org.onap.cps.ncmp.api.impl.config.DmiProperties;
-import org.onap.cps.ncmp.api.impl.exception.DmiClientRequestException;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters;
+import org.onap.cps.ncmp.api.exceptions.DmiClientRequestException;
import org.onap.cps.ncmp.impl.models.RequiredDmiService;
import org.onap.cps.utils.JsonObjectMapper;
import org.springframework.beans.factory.annotation.Qualifier;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.utils;
+package org.onap.cps.ncmp.impl.dmi;
import java.util.Collection;
import java.util.HashMap;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.utils.url.builder;
+package org.onap.cps.ncmp.impl.dmi;
import java.util.Collections;
import java.util.HashMap;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config;
+package org.onap.cps.ncmp.impl.dmi;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.channel.ChannelOption;
import java.time.Duration;
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
+import org.onap.cps.ncmp.config.HttpClientConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.utils.url.builder;
+package org.onap.cps.ncmp.impl.dmi;
import java.util.Map;
import java.util.List;
import java.util.Map;
import lombok.RequiredArgsConstructor;
-import org.onap.cps.ncmp.api.impl.client.DmiRestClient;
-import org.onap.cps.ncmp.api.impl.config.DmiProperties;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.DmiServiceUrlTemplateBuilder;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters;
import org.onap.cps.ncmp.api.inventory.models.YangResource;
+import org.onap.cps.ncmp.impl.dmi.DmiProperties;
+import org.onap.cps.ncmp.impl.dmi.DmiRestClient;
+import org.onap.cps.ncmp.impl.dmi.DmiServiceUrlTemplateBuilder;
+import org.onap.cps.ncmp.impl.dmi.UrlTemplateParameters;
import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle;
import org.onap.cps.ncmp.impl.models.DmiRequestBody;
import org.onap.cps.spi.model.ModuleReference;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
-import org.onap.cps.ncmp.api.impl.utils.EventDateTimeFormatter;
import org.onap.cps.ncmp.api.inventory.models.NcmpServiceCmHandle;
import org.onap.cps.ncmp.events.lcm.v1.Event;
import org.onap.cps.ncmp.events.lcm.v1.LcmEvent;
import org.onap.cps.ncmp.events.lcm.v1.LcmEventHeader;
import org.onap.cps.ncmp.events.lcm.v1.Values;
+import org.onap.cps.ncmp.impl.utils.EventDateTimeFormatter;
import org.springframework.stereotype.Component;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.onap.cps.ncmp.api.impl.client.DmiRestClient;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.DmiServiceUrlTemplateBuilder;
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters;
import org.onap.cps.ncmp.api.inventory.models.TrustLevel;
+import org.onap.cps.ncmp.impl.dmi.DmiRestClient;
+import org.onap.cps.ncmp.impl.dmi.DmiServiceUrlTemplateBuilder;
+import org.onap.cps.ncmp.impl.dmi.UrlTemplateParameters;
import org.onap.cps.ncmp.impl.inventory.CmHandleQueryService;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.utils;
+package org.onap.cps.ncmp.impl.utils;
import java.time.OffsetDateTime;
import java.time.ZonedDateTime;
import org.onap.cps.api.CpsDataService;
import org.onap.cps.api.CpsDataspaceService;
import org.onap.cps.api.CpsModuleService;
-import org.onap.cps.ncmp.api.impl.exception.NcmpStartUpException;
+import org.onap.cps.ncmp.exceptions.NcmpStartUpException;
import org.onap.cps.spi.CascadeDeleteAllowed;
import org.onap.cps.spi.exceptions.AlreadyDefinedException;
import org.onap.cps.utils.JsonObjectMapper;
import org.onap.cps.api.CpsDataspaceService;
import org.onap.cps.api.CpsModuleService;
import org.onap.cps.ncmp.api.data.models.DatastoreType;
-import org.onap.cps.ncmp.api.impl.exception.NcmpStartUpException;
+import org.onap.cps.ncmp.exceptions.NcmpStartUpException;
import org.onap.cps.spi.exceptions.AlreadyDefinedException;
import org.springframework.stereotype.Service;
import java.util.UUID;
import lombok.Builder;
import org.apache.commons.lang3.StringUtils;
-import org.onap.cps.ncmp.api.impl.utils.EventDateTimeFormatter;
-import org.onap.cps.ncmp.api.impl.utils.context.CpsApplicationContext;
+import org.onap.cps.ncmp.config.CpsApplicationContext;
+import org.onap.cps.ncmp.impl.utils.EventDateTimeFormatter;
import org.onap.cps.utils.JsonObjectMapper;
@Builder
import java.util.regex.Pattern;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.onap.cps.ncmp.exceptions.InvalidTopicException;
+import org.onap.cps.ncmp.api.exceptions.InvalidTopicException;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class TopicValidator {
+++ /dev/null
-/*
- * ============LICENSE_START========================================================
- * Copyright (c) 2023 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.cps.ncmp.api.impl.utils
-
-import org.onap.cps.spi.model.DataNodeBuilder
-import spock.lang.Specification
-
-import static org.onap.cps.ncmp.impl.inventory.NcmpPersistence.NCMP_DATASPACE_NAME
-
-class DataNodeBaseSpec extends Specification {
-
- def leaves1 = [status:'PENDING', cmHandleId:'CMHandle3', details:'Subscription forwarded to dmi plugin'] as Map
- def dataNode1 = createDataNodeWithLeaves(leaves1)
-
- def leaves2 = [status:'ACCEPTED', cmHandleId:'CMHandle2', details:''] as Map
- def dataNode2 = createDataNodeWithLeaves(leaves2)
-
- def leaves3 = [status:'REJECTED', cmHandleId:'CMHandle1', details:'Cm handle does not exist'] as Map
- def dataNode3 = createDataNodeWithLeaves(leaves3)
-
- def leaves4 = [datastore:'passthrough-running'] as Map
- def dataNode4 = createDataNodeWithLeavesAndChildDataNodes(leaves4, [dataNode1, dataNode2, dataNode3])
-
- static def createDataNodeWithLeaves(leaves) {
- return new DataNodeBuilder().withDataspace(NCMP_DATASPACE_NAME)
- .withAnchor('AVC-Subscriptions').withXpath('/subscription-registry/subscription')
- .withLeaves(leaves).build()
- }
-
- static def createDataNodeWithLeavesAndChildDataNodes(leaves, dataNodes) {
- return new DataNodeBuilder().withDataspace(NCMP_DATASPACE_NAME)
- .withAnchor('AVC-Subscriptions').withXpath('/subscription-registry/subscription')
- .withLeaves(leaves).withChildDataNodes(dataNodes)
- .build()
- }
-}
+++ /dev/null
-/*
- * ============LICENSE_START========================================================
- * Copyright (c) 2023 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.cps.ncmp.api.impl.utils
-
-import org.onap.cps.spi.model.DataNodeBuilder
-
-import static org.onap.cps.ncmp.impl.inventory.NcmpPersistence.NCMP_DATASPACE_NAME
-
-class DataNodeHelperSpec extends DataNodeBaseSpec {
-
- def 'Get data node leaves as expected from a nested data node.'() {
- given: 'a nested data node'
- def dataNode = new DataNodeBuilder().withDataspace(NCMP_DATASPACE_NAME)
- .withAnchor('AVC-Subscriptions').withXpath('/subscription-registry/subscription')
- .withLeaves([clientID:'SCO-9989752', isTagged:false, subscriptionName:'cm-subscription-001'])
- .withChildDataNodes([dataNode4]).build()
- when: 'the nested data node is flatten and retrieves the leaves '
- def result = DataNodeHelper.getDataNodeLeaves([dataNode])
- then: 'the result list size is 5'
- result.size() == 5
- and: 'all the leaves result list are equal to given leaves of data nodes'
- result[0] == [clientID:'SCO-9989752', isTagged:false, subscriptionName:'cm-subscription-001']
- result[1] == [datastore:'passthrough-running']
- result[2] == [status:'PENDING', cmHandleId:'CMHandle3', details:'Subscription forwarded to dmi plugin']
- result[3] == [status:'ACCEPTED', cmHandleId:'CMHandle2', details:'']
- result[4] == [status:'REJECTED', cmHandleId:'CMHandle1', details:'Cm handle does not exist']
- }
-
- def 'Get cm handle id to status as expected from a nested data node.'() {
- given: 'a nested data node'
- def dataNode = new DataNodeBuilder().withDataspace(NCMP_DATASPACE_NAME)
- .withAnchor('AVC-Subscriptions').withXpath('/subscription-registry/subscription')
- .withLeaves([clientID:'SCO-9989752', isTagged:false, subscriptionName:'cm-subscription-001'])
- .withChildDataNodes([dataNode4]).build()
- and: 'the nested data node is flatten and retrieves the leaves '
- def leaves = DataNodeHelper.getDataNodeLeaves([dataNode])
- when:'cm handle id to status is retrieved'
- def result = DataNodeHelper.cmHandleIdToStatusAndDetailsAsMap(leaves)
- then: 'the result list size is 3'
- result.size() == 3
- and: 'the result contains expected values'
- result == [
- CMHandle3: [details:'Subscription forwarded to dmi plugin',status:'PENDING'] as Map,
- CMHandle2: [details:'',status:'ACCEPTED'] as Map,
- CMHandle1: [details:'Cm handle does not exist',status:'REJECTED'] as Map
- ] as Map
-
- }
-
- def 'Get cm handle id to status map as expected from a nested data node.'() {
- given: 'a nested data node'
- def dataNode = new DataNodeBuilder().withDataspace(NCMP_DATASPACE_NAME)
- .withAnchor('AVC-Subscriptions').withXpath('/subscription-registry/subscription')
- .withLeaves([clientID:'SCO-9989752', isTagged:false, subscriptionName:'cm-subscription-001'])
- .withChildDataNodes([dataNode4]).build()
- when:'cm handle id to status is being extracted'
- def result = DataNodeHelper.cmHandleIdToStatusAndDetailsAsMapFromDataNode([dataNode]);
- then: 'the result list size is 3'
- result.size() == 3
- and: 'the result contains expected values'
- result == [
- CMHandle3: [details:'Subscription forwarded to dmi plugin',status:'PENDING'] as Map,
- CMHandle2: [details:'',status:'ACCEPTED'] as Map,
- CMHandle1: [details:'Cm handle does not exist',status:'REJECTED'] as Map
- ] as Map
- }
-}
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.utils.context
+package org.onap.cps.ncmp.config
import com.fasterxml.jackson.databind.ObjectMapper
import org.onap.cps.utils.JsonObjectMapper
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config
+package org.onap.cps.ncmp.config
+
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.context.properties.EnableConfigurationProperties
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config.kafka
+package org.onap.cps.ncmp.config
import io.cloudevents.CloudEvent
import io.cloudevents.kafka.CloudEventDeserializer
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config
+package org.onap.cps.ncmp.config
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter
import io.cloudevents.CloudEvent
import io.cloudevents.core.builder.CloudEventBuilder
import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
import org.onap.cps.ncmp.impl.cmnotificationsubscription.models.CmSubscriptionStatus
import org.onap.cps.ncmp.impl.cmnotificationsubscription.models.DmiCmSubscriptionDetails
import org.onap.cps.ncmp.impl.cmnotificationsubscription.utils.CmSubscriptionPersistenceService
import org.onap.cps.ncmp.impl.inventory.InventoryPersistence
import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle
import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.ncmp.utils.events.MessagingBaseSpec
import org.onap.cps.utils.JsonObjectMapper
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.apache.kafka.clients.consumer.KafkaConsumer
import org.onap.cps.events.EventsPublisher
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
import org.onap.cps.ncmp.events.avc1_0_0.AvcEvent
import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.ncmp.utils.events.MessagingBaseSpec
import org.onap.cps.utils.JsonObjectMapper
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import io.cloudevents.CloudEvent
import io.cloudevents.core.builder.CloudEventBuilder
import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
import org.onap.cps.ncmp.impl.cmnotificationsubscription.cache.DmiCacheHandler
import org.onap.cps.ncmp.impl.cmnotificationsubscription.ncmp.NcmpOutEventMapper
import org.onap.cps.ncmp.impl.cmnotificationsubscription.ncmp.NcmpOutEventProducer
import org.onap.cps.ncmp.impl.cmnotificationsubscription_1_0_0.dmi_to_ncmp.Data
import org.onap.cps.ncmp.impl.cmnotificationsubscription_1_0_0.dmi_to_ncmp.DmiOutEvent
import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.ncmp.utils.events.MessagingBaseSpec
import org.onap.cps.utils.JsonObjectMapper
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import io.cloudevents.CloudEvent
import io.cloudevents.core.builder.CloudEventBuilder
import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
import org.onap.cps.ncmp.impl.cmnotificationsubscription_1_0_0.client_to_ncmp.NcmpInEvent
import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.ncmp.utils.events.MessagingBaseSpec
import org.onap.cps.utils.JsonObjectMapper
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.onap.cps.events.EventsPublisher
import org.onap.cps.ncmp.api.data.models.CmResourceAddress
import org.onap.cps.ncmp.api.data.models.DataOperationRequest
-import org.onap.cps.ncmp.api.impl.config.DmiProperties
-import org.onap.cps.ncmp.api.impl.exception.DmiClientRequestException
-import org.onap.cps.ncmp.api.impl.utils.context.CpsApplicationContext
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters
+import org.onap.cps.ncmp.api.exceptions.DmiClientRequestException
+import org.onap.cps.ncmp.config.CpsApplicationContext
import org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent
-import org.onap.cps.ncmp.impl.DmiOperationsBaseSpec
+import org.onap.cps.ncmp.impl.dmi.DmiOperationsBaseSpec
+import org.onap.cps.ncmp.impl.dmi.DmiProperties
+import org.onap.cps.ncmp.impl.dmi.UrlTemplateParameters
import org.onap.cps.ncmp.impl.inventory.models.CmHandleState
import org.onap.cps.ncmp.utils.TestUtils
import org.onap.cps.utils.JsonObjectMapper
import org.onap.cps.ncmp.api.data.models.CmResourceAddress
import org.onap.cps.ncmp.api.data.models.DataOperationDefinition
import org.onap.cps.ncmp.api.data.models.DataOperationRequest
-import org.onap.cps.ncmp.exceptions.PayloadTooLargeException
+import org.onap.cps.ncmp.api.exceptions.PayloadTooLargeException
import org.springframework.http.ResponseEntity
import reactor.core.publisher.Mono
import spock.lang.Specification
import org.apache.kafka.common.serialization.StringDeserializer
import org.mapstruct.factory.Mappers
import org.onap.cps.events.EventsPublisher
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
import org.onap.cps.ncmp.event.model.DmiAsyncRequestResponseEvent
import org.onap.cps.ncmp.event.model.NcmpAsyncRequestResponseEvent
import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.ncmp.utils.events.MessagingBaseSpec
import org.onap.cps.utils.JsonObjectMapper
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import org.apache.kafka.clients.consumer.KafkaConsumer
import org.apache.kafka.common.header.internals.RecordHeaders
import org.onap.cps.events.EventsPublisher
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
import org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent
import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.ncmp.utils.events.MessagingBaseSpec
import org.onap.cps.utils.JsonObjectMapper
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import io.cloudevents.core.builder.CloudEventBuilder
import org.onap.cps.events.EventsPublisher
-import org.onap.cps.ncmp.api.impl.config.kafka.KafkaConfig
-import org.onap.cps.ncmp.api.kafka.ConsumerBaseSpec
+import org.onap.cps.ncmp.config.KafkaConfig
import org.onap.cps.ncmp.event.model.DmiAsyncRequestResponseEvent
+import org.onap.cps.ncmp.utils.events.ConsumerBaseSpec
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import com.fasterxml.jackson.databind.ObjectMapper
import io.cloudevents.core.builder.CloudEventBuilder
import org.onap.cps.events.EventsPublisher
-import org.onap.cps.ncmp.api.impl.config.kafka.KafkaConfig
-import org.onap.cps.ncmp.api.kafka.ConsumerBaseSpec
+import org.onap.cps.ncmp.config.KafkaConfig
import org.onap.cps.ncmp.event.model.DmiAsyncRequestResponseEvent
import org.onap.cps.ncmp.event.model.NcmpAsyncRequestResponseEvent
import org.onap.cps.ncmp.events.async1_0_0.Data
import org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent
import org.onap.cps.ncmp.events.async1_0_0.Response
+import org.onap.cps.ncmp.utils.events.ConsumerBaseSpec
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
import org.onap.cps.events.EventsPublisher
import org.onap.cps.ncmp.api.data.models.DataOperationRequest
import org.onap.cps.ncmp.api.data.models.OperationType
-import org.onap.cps.ncmp.api.impl.utils.context.CpsApplicationContext
import org.onap.cps.ncmp.api.inventory.models.CompositeStateBuilder
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
+import org.onap.cps.ncmp.config.CpsApplicationContext
import org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent
import org.onap.cps.ncmp.impl.data.models.DmiDataOperation
import org.onap.cps.ncmp.impl.inventory.models.YangModelCmHandle
import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.ncmp.utils.events.MessagingBaseSpec
import org.onap.cps.utils.JsonObjectMapper
import org.spockframework.spring.SpringBean
import org.springframework.test.context.ContextConfiguration
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl
+package org.onap.cps.ncmp.impl.datajobs
import ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger
import ch.qos.logback.classic.spi.ILoggingEvent
import ch.qos.logback.core.read.ListAppender
-import org.onap.cps.ncmp.impl.datajobs.DataJobServiceImpl
-import org.onap.cps.ncmp.impl.datajobs.DmiSubJobRequestHandler
-import org.onap.cps.ncmp.impl.datajobs.WriteRequestExaminer
-import org.slf4j.LoggerFactory
+import org.onap.cps.ncmp.api.datajobs.models.DataJobMetadata
import org.onap.cps.ncmp.api.datajobs.models.DataJobReadRequest
import org.onap.cps.ncmp.api.datajobs.models.DataJobWriteRequest
-import org.onap.cps.ncmp.api.datajobs.models.DataJobMetadata
import org.onap.cps.ncmp.api.datajobs.models.ReadOperation
import org.onap.cps.ncmp.api.datajobs.models.WriteOperation
+import org.slf4j.LoggerFactory
import spock.lang.Specification
class DataJobServiceImplSpec extends Specification {
setupLogger.addAppender(logger)
logger.start()
}
-}
\ No newline at end of file
+}
-package org.onap.cps.ncmp.api.impl
+package org.onap.cps.ncmp.impl.datajobs
import com.fasterxml.jackson.databind.ObjectMapper
import org.onap.cps.ncmp.api.data.models.OperationType
import org.onap.cps.ncmp.api.datajobs.models.DmiWriteOperation
import org.onap.cps.ncmp.api.datajobs.models.ProducerKey
import org.onap.cps.ncmp.api.datajobs.models.SubJobWriteResponse
-import org.onap.cps.ncmp.api.impl.client.DmiRestClient
-import org.onap.cps.ncmp.api.impl.config.DmiProperties
-import org.onap.cps.ncmp.impl.datajobs.DmiSubJobRequestHandler
+import org.onap.cps.ncmp.impl.dmi.DmiProperties
+import org.onap.cps.ncmp.impl.dmi.DmiRestClient
import org.onap.cps.ncmp.impl.models.RequiredDmiService
import org.onap.cps.utils.JsonObjectMapper
import org.springframework.http.HttpStatus
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.impl
+package org.onap.cps.ncmp.impl.dmi
import com.fasterxml.jackson.databind.ObjectMapper
-import org.onap.cps.ncmp.api.impl.client.DmiRestClient
import org.onap.cps.ncmp.api.inventory.models.CompositeState
import org.onap.cps.ncmp.impl.inventory.InventoryPersistence
import org.onap.cps.ncmp.impl.inventory.models.CmHandleState
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config
+package org.onap.cps.ncmp.impl.dmi
+
import spock.lang.Specification
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.client
+package org.onap.cps.ncmp.impl.dmi
import com.fasterxml.jackson.databind.JsonNode
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.node.ObjectNode
-import org.onap.cps.ncmp.api.impl.config.DmiProperties
-import org.onap.cps.ncmp.api.impl.exception.DmiClientRequestException
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters
+import org.onap.cps.ncmp.api.exceptions.DmiClientRequestException
import org.onap.cps.ncmp.utils.TestUtils
import org.onap.cps.utils.JsonObjectMapper
import org.springframework.http.HttpHeaders
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.utils.url.builder
+package org.onap.cps.ncmp.impl.dmi
+
import spock.lang.Specification
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.config
+package org.onap.cps.ncmp.impl.dmi
+
+import org.onap.cps.ncmp.config.HttpClientConfiguration
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.ContextConfiguration
import com.hazelcast.map.IMap
import org.onap.cps.api.CpsDataService
import org.onap.cps.api.CpsModuleService
-import org.onap.cps.ncmp.api.impl.exception.DmiRequestException
+import org.onap.cps.ncmp.api.exceptions.DmiRequestException
import org.onap.cps.ncmp.api.inventory.models.CmHandleRegistrationResponse
import org.onap.cps.ncmp.api.inventory.models.CompositeState
import org.onap.cps.ncmp.api.inventory.models.DmiPluginRegistration
import com.fasterxml.jackson.core.JsonProcessingException
import com.fasterxml.jackson.databind.ObjectMapper
-import org.onap.cps.ncmp.api.impl.config.DmiProperties
-import org.onap.cps.ncmp.impl.DmiOperationsBaseSpec
+import org.onap.cps.ncmp.impl.dmi.DmiOperationsBaseSpec
+import org.onap.cps.ncmp.impl.dmi.DmiProperties
+import org.onap.cps.ncmp.impl.dmi.UrlTemplateParameters
import org.onap.cps.spi.model.ModuleReference
import org.onap.cps.utils.JsonObjectMapper
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.apache.kafka.clients.consumer.KafkaConsumer
import org.apache.kafka.common.serialization.StringDeserializer
import org.onap.cps.events.EventsPublisher
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
import org.onap.cps.ncmp.events.lcm.v1.Event
import org.onap.cps.ncmp.events.lcm.v1.LcmEvent
import org.onap.cps.ncmp.utils.TestUtils
+import org.onap.cps.ncmp.utils.events.MessagingBaseSpec
import org.onap.cps.utils.JsonObjectMapper
import org.spockframework.spring.SpringBean
import org.springframework.beans.factory.annotation.Autowired
package org.onap.cps.ncmp.impl.inventory.trustlevel
-import org.onap.cps.ncmp.api.impl.client.DmiRestClient
-import org.onap.cps.ncmp.api.impl.utils.url.builder.UrlTemplateParameters
import org.onap.cps.ncmp.api.inventory.models.TrustLevel
+import org.onap.cps.ncmp.impl.dmi.DmiRestClient
+import org.onap.cps.ncmp.impl.dmi.UrlTemplateParameters
import org.onap.cps.ncmp.impl.inventory.CmHandleQueryService
import reactor.core.publisher.Mono
import spock.lang.Specification
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.impl.utils
+package org.onap.cps.ncmp.impl.utils
import spock.lang.Specification
+
import java.time.Year
class EventDateTimeFormatterSpec extends Specification {
import ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger
import ch.qos.logback.core.read.ListAppender
-import org.onap.cps.api.CpsDataspaceService
import org.onap.cps.api.CpsAnchorService
import org.onap.cps.api.CpsDataService
+import org.onap.cps.api.CpsDataspaceService
import org.onap.cps.api.CpsModuleService
-import org.onap.cps.ncmp.api.impl.exception.NcmpStartUpException
+import org.onap.cps.ncmp.exceptions.NcmpStartUpException
import org.onap.cps.spi.CascadeDeleteAllowed
import org.onap.cps.spi.exceptions.AlreadyDefinedException
-import org.springframework.boot.SpringApplication
import org.slf4j.LoggerFactory
+import org.springframework.boot.SpringApplication
import org.springframework.boot.context.event.ApplicationStartedEvent
import org.springframework.context.annotation.AnnotationConfigApplicationContext
import spock.lang.Specification
import org.onap.cps.api.CpsDataService
import org.onap.cps.api.CpsDataspaceService
import org.onap.cps.api.CpsModuleService
-import org.onap.cps.ncmp.api.impl.exception.NcmpStartUpException
+import org.onap.cps.ncmp.exceptions.NcmpStartUpException
import org.onap.cps.spi.exceptions.AlreadyDefinedException
import org.onap.cps.spi.model.Dataspace
import org.slf4j.LoggerFactory
import com.fasterxml.jackson.databind.ObjectMapper
import io.cloudevents.CloudEvent
import org.onap.cps.events.EventsPublisher
-import org.onap.cps.ncmp.api.impl.utils.context.CpsApplicationContext
-import org.onap.cps.ncmp.api.kafka.MessagingBaseSpec
+import org.onap.cps.ncmp.config.CpsApplicationContext
import org.onap.cps.ncmp.events.avc.ncmp_to_client.Avc
import org.onap.cps.ncmp.events.avc.ncmp_to_client.AvcEvent
import org.onap.cps.utils.JsonObjectMapper
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.kafka
+package org.onap.cps.ncmp.utils.events
+
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
* ============LICENSE_END=========================================================
*/
-package org.onap.cps.ncmp.api.kafka
+package org.onap.cps.ncmp.utils.events
import io.cloudevents.CloudEvent
import io.cloudevents.kafka.CloudEventSerializer
package org.onap.cps.ncmp.utils.events
-import org.onap.cps.ncmp.exceptions.InvalidTopicException
+import org.onap.cps.ncmp.api.exceptions.InvalidTopicException
import spock.lang.Specification
class TopicValidatorSpec extends Specification {
import lombok.extern.slf4j.Slf4j;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
-import org.onap.cps.ncmp.api.impl.utils.EventDateTimeFormatter;
import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DataOperationRequest;
import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DmiDataOperationRequest;
import org.onap.cps.ncmp.dmi.rest.stub.model.data.operational.DmiOperationCmHandle;
import org.onap.cps.ncmp.events.async1_0_0.Data;
import org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent;
import org.onap.cps.ncmp.events.async1_0_0.Response;
+import org.onap.cps.ncmp.impl.utils.EventDateTimeFormatter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.Resource;