diff options
author | 2022-03-02 14:32:47 +0000 | |
---|---|---|
committer | 2022-03-10 17:58:57 +0000 | |
commit | d5bda8848a661465f214b0bf11211e63b272cfd6 (patch) | |
tree | 58a6a5e01ca0d5a80d0ada491e3b59c9ee7781c5 /cps-rest/src/main/java/org | |
parent | 3d02e9210625b75419089a3f5612f386c3b997ea (diff) |
Replacing ModelMapper with MapStruct
- Removed Model Mapper from pom files
- Replaced ModelMapper with MapStruct
- Added Tests for MapStruct
- Changed mapstruct annotations for individual variables to be null safe rather than all variables
- Excluded generated code from code coverage
- Set ModuleReferences input to required for SchemaSet so that ModuleReferences list set to empty list rather than null
Issue-ID: CPS-127
Signed-off-by: lukegleeson <luke.gleeson@est.tech>
Change-Id: I43f874aea79f58dda5526c6fdead27d8474d90af
Diffstat (limited to 'cps-rest/src/main/java/org')
3 files changed, 52 insertions, 56 deletions
diff --git a/cps-rest/src/main/java/org/onap/cps/config/CpsConfig.java b/cps-rest/src/main/java/org/onap/cps/config/CpsConfig.java deleted file mode 100755 index 4f4501afb..000000000 --- a/cps-rest/src/main/java/org/onap/cps/config/CpsConfig.java +++ /dev/null @@ -1,41 +0,0 @@ -/*
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020 Nordix Foundation.
- * Modifications Copyright (C) 2021 Pantheon.tech
- * Modifications Copyright (C) 2021 Bell Canada.
- * ================================================================================
- * 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.config;
-
-import org.modelmapper.ModelMapper;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.retry.annotation.EnableRetry;
-
-@Configuration
-@EnableRetry
-public class CpsConfig {
-
- /**
- * ModelMapper configuration.
- */
- @Bean
- public ModelMapper modelMapper() {
- return new ModelMapper();
- }
-}
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java index 52e64a95b..2707d9f29 100755 --- a/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java +++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/AdminRestController.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation + * Copyright (C) 2020-2022 Nordix Foundation * Modifications Copyright (C) 2020-2021 Bell Canada. * Modifications Copyright (C) 2021 Pantheon.tech * ================================================================================ @@ -30,7 +30,7 @@ import java.util.List; import java.util.stream.Collectors; import javax.validation.Valid; import javax.validation.constraints.NotNull; -import org.modelmapper.ModelMapper; +import lombok.RequiredArgsConstructor; import org.onap.cps.api.CpsAdminService; import org.onap.cps.api.CpsModuleService; import org.onap.cps.rest.api.CpsAdminApi; @@ -38,7 +38,6 @@ import org.onap.cps.rest.model.AnchorDetails; import org.onap.cps.rest.model.SchemaSetDetails; import org.onap.cps.spi.model.Anchor; import org.onap.cps.spi.model.SchemaSet; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; @@ -47,16 +46,12 @@ import org.springframework.web.multipart.MultipartFile; @RestController @RequestMapping("${rest.api.cps-base-path}") +@RequiredArgsConstructor public class AdminRestController implements CpsAdminApi { - @Autowired - private CpsAdminService cpsAdminService; - - @Autowired - private CpsModuleService cpsModuleService; - - @Autowired - private ModelMapper modelMapper; + private final CpsAdminService cpsAdminService; + private final CpsModuleService cpsModuleService; + private final CpsRestInputMapper cpsRestInputMapper; /** * Create a dataspace. @@ -107,7 +102,7 @@ public class AdminRestController implements CpsAdminApi { @Override public ResponseEntity<SchemaSetDetails> getSchemaSet(final String dataspaceName, final String schemaSetName) { final var schemaSet = cpsModuleService.getSchemaSet(dataspaceName, schemaSetName); - final var schemaSetDetails = modelMapper.map(schemaSet, SchemaSetDetails.class); + final var schemaSetDetails = cpsRestInputMapper.toSchemaSetDetails(schemaSet); return new ResponseEntity<>(schemaSetDetails, HttpStatus.OK); } @@ -162,7 +157,7 @@ public class AdminRestController implements CpsAdminApi { @Override public ResponseEntity<AnchorDetails> getAnchor(final String dataspaceName, final String anchorName) { final var anchor = cpsAdminService.getAnchor(dataspaceName, anchorName); - final var anchorDetails = modelMapper.map(anchor, AnchorDetails.class); + final var anchorDetails = cpsRestInputMapper.toAnchorDetails(anchor); return new ResponseEntity<>(anchorDetails, HttpStatus.OK); } @@ -175,8 +170,8 @@ public class AdminRestController implements CpsAdminApi { @Override public ResponseEntity<List<AnchorDetails>> getAnchors(final String dataspaceName) { final Collection<Anchor> anchors = cpsAdminService.getAnchors(dataspaceName); - final List<AnchorDetails> anchorDetails = anchors.stream().map(anchor -> - modelMapper.map(anchor, AnchorDetails.class)).collect(Collectors.toList()); + final List<AnchorDetails> anchorDetails = anchors.stream().map(cpsRestInputMapper::toAnchorDetails) + .collect(Collectors.toList()); return new ResponseEntity<>(anchorDetails, HttpStatus.OK); } } diff --git a/cps-rest/src/main/java/org/onap/cps/rest/controller/CpsRestInputMapper.java b/cps-rest/src/main/java/org/onap/cps/rest/controller/CpsRestInputMapper.java new file mode 100644 index 000000000..d0a4a108c --- /dev/null +++ b/cps-rest/src/main/java/org/onap/cps/rest/controller/CpsRestInputMapper.java @@ -0,0 +1,42 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2022 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.rest.controller; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.NullValueCheckStrategy; +import org.mapstruct.NullValuePropertyMappingStrategy; +import org.onap.cps.rest.model.AnchorDetails; +import org.onap.cps.rest.model.SchemaSetDetails; +import org.onap.cps.spi.model.Anchor; +import org.onap.cps.spi.model.SchemaSet; + +@Mapper(componentModel = "spring") +public interface CpsRestInputMapper { + + @Mapping(source = "moduleReferences", target = "moduleReferences", + nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, + nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_DEFAULT) + SchemaSetDetails toSchemaSetDetails(final SchemaSet schemaSet); + + AnchorDetails toAnchorDetails(final Anchor anchor); + +} |