Loading src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiController.java +3 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,9 @@ public class ServiceOrderApiController implements ServiceOrderApi { return new ResponseEntity<ServiceOrder>(c, HttpStatus.OK); } catch (NotFoundException e) { log.error("Couldn't create Service Order. ", e); return new ResponseEntity<ServiceOrder>(HttpStatus.BAD_REQUEST); } catch (Exception e) { log.error("Couldn't serialize response for content type application/json", e); return new ResponseEntity<ServiceOrder>(HttpStatus.INTERNAL_SERVER_ERROR); Loading src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java +35 −30 Original line number Diff line number Diff line Loading @@ -25,14 +25,7 @@ import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.*; import java.util.stream.Collectors; import com.fasterxml.jackson.core.JsonProcessingException; Loading @@ -45,30 +38,16 @@ import org.apache.commons.logging.LogFactory; import org.etsi.osl.tmf.common.model.Any; import org.etsi.osl.tmf.common.model.EValueType; import org.etsi.osl.tmf.common.model.UserPartRoleType; import org.etsi.osl.tmf.common.model.service.Characteristic; import org.etsi.osl.tmf.common.model.service.Note; import org.etsi.osl.tmf.common.model.service.ResourceRef; import org.etsi.osl.tmf.common.model.service.ServiceRef; import org.etsi.osl.tmf.common.model.service.*; import org.etsi.osl.tmf.prm669.model.RelatedParty; import org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristic; import org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristicValue; import org.etsi.osl.tmf.scm633.model.ServiceSpecification; import org.etsi.osl.tmf.scm633.reposervices.ServiceSpecificationRepoService; import org.etsi.osl.tmf.sim638.service.ServiceRepoService; import org.etsi.osl.tmf.so641.api.NotFoundException; import org.etsi.osl.tmf.so641.api.ServiceOrderApiRouteBuilderEvents; import org.etsi.osl.tmf.so641.model.ServiceOrder; import org.etsi.osl.tmf.so641.model.ServiceOrderActionType; import org.etsi.osl.tmf.so641.model.ServiceOrderAttributeValueChangeEvent; import org.etsi.osl.tmf.so641.model.ServiceOrderAttributeValueChangeNotification; import org.etsi.osl.tmf.so641.model.ServiceOrderCreate; import org.etsi.osl.tmf.so641.model.ServiceOrderCreateEvent; import org.etsi.osl.tmf.so641.model.ServiceOrderCreateNotification; import org.etsi.osl.tmf.so641.model.ServiceOrderItem; import org.etsi.osl.tmf.so641.model.ServiceOrderRelationship; import org.etsi.osl.tmf.so641.model.ServiceOrderStateChangeEvent; import org.etsi.osl.tmf.so641.model.ServiceOrderStateChangeNotification; import org.etsi.osl.tmf.so641.model.ServiceOrderStateType; import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate; import org.etsi.osl.tmf.so641.model.*; import org.etsi.osl.tmf.so641.repo.ServiceOrderRepository; import org.etsi.osl.tmf.util.KrokiClient; import org.hibernate.Hibernate; Loading Loading @@ -319,7 +298,20 @@ public class ServiceOrderRepoService { } @Transactional public ServiceOrder addServiceOrder(@Valid ServiceOrderCreate serviceOrderCreate) { public ServiceOrder addServiceOrder(@Valid ServiceOrderCreate serviceOrderCreate) throws NotFoundException { // Ensure that all Services Specifications exist List <ServiceOrderItem> serviceOrderItemList = serviceOrderCreate.getOrderItem(); for (ServiceOrderItem serviceOrderItem: serviceOrderItemList) { ServiceRestriction serviceRestriction = serviceOrderItem.getService(); ServiceSpecificationRef serviceSpecificationRef = serviceRestriction.getServiceSpecification(); String serviceSpecificationId = serviceSpecificationRef.getId(); ServiceSpecification serviceSpecification = serviceSpecRepoService.findByUuid(serviceSpecificationId); if (serviceSpecification == null) throw new NotFoundException(400, "There is no Service Specification with Id: " + serviceSpecificationId); } ServiceOrder so = new ServiceOrder(); so.setOrderDate(OffsetDateTime.now(ZoneOffset.UTC)); so.setCategory(serviceOrderCreate.getCategory()); Loading Loading @@ -539,6 +531,7 @@ public class ServiceOrderRepoService { ServiceOrder so = this.findByUuid(id); boolean stateChanged = false; boolean expectedCompletionDateChanged = false; //logger.info("so:" + so.toString()); for (ServiceOrderItem oi : so.getOrderItem() ) { Loading Loading @@ -590,7 +583,7 @@ public class ServiceOrderRepoService { if ( serviceOrderUpd.getExpectedCompletionDate()!= null ) { so.setExpectedCompletionDate(serviceOrderUpd.getExpectedCompletionDate()); expectedCompletionDateChanged = true; } if ( serviceOrderUpd.getStartDate()!= null ) { Loading Loading @@ -655,8 +648,17 @@ public class ServiceOrderRepoService { so.addNoteItem(noteItem); } // Update each Service's end date to the updated Service Order's expected completion date if (expectedCompletionDateChanged) { List<String> services = serviceRepoService.getServicesFromOrderID(id); for (String serviceId : services) { logger.debug("Will delegate updated SO expected completion date " + so.getExpectedCompletionDate() + " to service with id = " + serviceId); org.etsi.osl.tmf.sim638.model.Service service = serviceRepoService.findByUuid(serviceId); service.setEndDate(so.getExpectedCompletionDate()); } } Loading Loading @@ -827,12 +829,15 @@ public class ServiceOrderRepoService { } public String addServiceOrderReturnEager(@Valid ServiceOrderCreate serviceOrderCreate) { ServiceOrder so = this.addServiceOrder(serviceOrderCreate); try { ServiceOrder so = this.addServiceOrder(serviceOrderCreate); return this.getServiceOrderEagerAsString( so.getUuid()); } catch (JsonProcessingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } Loading src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java +14 −3 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import java.net.URI; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.List; import org.apache.camel.CamelContext; import org.apache.camel.RoutesBuilder; Loading Loading @@ -356,8 +357,18 @@ public class ServiceOrderIntegrationTest { assertThat(sspeccr1SO).isNotNull(); // Ensure that all Services' end dates were updated correctly boolean allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = true; List<String> services = serviceRepoService.getServicesFromOrderID(responseSO.getId()); for (String serviceId : services) { Service service = serviceRepoService.findByUuid(serviceId); if (!service.getEndDate().equals(responseSOUpd.getExpectedCompletionDate())) { allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = false; break; } } assertThat(allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate).isTrue(); } @WithMockUser(username="osadmin", roles = {"USER"}) Loading src/test/java/org/etsi/osl/services/api/so641/ServiceOrderApiControllerTest.java +41 −1 Original line number Diff line number Diff line Loading @@ -89,6 +89,15 @@ public class ServiceOrderApiControllerTest { } @WithMockUser(username="osadmin", roles = {"ADMIN","USER"}) @Test public void testCreateServiceOrderWithNonExistingServiceSpecification() throws Exception { createServiceOrderWithNonExistingServiceSpecification(); assertThat( serviceOrderRepoService.findAll().size() ).isEqualTo( FIXED_BOOTSTRAPS_SPECS ); } @WithMockUser(username="osadmin", roles = {"ADMIN","USER"}) @Test public void testDeleteServiceOrder() throws Exception { Loading Loading @@ -278,4 +287,35 @@ public class ServiceOrderApiControllerTest { return responsesSpec; } private void createServiceOrderWithNonExistingServiceSpecification() throws Exception { assertThat( serviceOrderRepoService.findAll().size() ).isEqualTo( FIXED_BOOTSTRAPS_SPECS); ServiceOrderCreate serviceOrder = new ServiceOrderCreate(); serviceOrder.setCategory("Test Category"); serviceOrder.setDescription("A Test Service Order"); serviceOrder.setRequestedStartDate(OffsetDateTime.now(ZoneOffset.UTC).toString()); serviceOrder.setRequestedCompletionDate(OffsetDateTime.now(ZoneOffset.UTC).toString()); ServiceOrderItem soi = new ServiceOrderItem(); serviceOrder.getOrderItem().add(soi); soi.setState(ServiceOrderStateType.ACKNOWLEDGED); ServiceRestriction serviceRestriction = new ServiceRestriction(); ServiceSpecificationRef aServiceSpecificationRef = new ServiceSpecificationRef(); aServiceSpecificationRef.setId("A random non-existing Id"); aServiceSpecificationRef.setName("A random non-existing name"); serviceRestriction.setServiceSpecification(aServiceSpecificationRef); serviceRestriction.setName("aServiceRestriction"); soi.setService(serviceRestriction); mvc .perform(MockMvcRequestBuilders.post("/serviceOrdering/v4/serviceOrder") .with( SecurityMockMvcRequestPostProcessors.csrf()) .contentType(MediaType.APPLICATION_JSON).content(JsonUtils.toJson(serviceOrder))) .andExpect(status().isBadRequest()).andReturn().getResponse().getContentAsString(); } } No newline at end of file Loading
src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiController.java +3 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,9 @@ public class ServiceOrderApiController implements ServiceOrderApi { return new ResponseEntity<ServiceOrder>(c, HttpStatus.OK); } catch (NotFoundException e) { log.error("Couldn't create Service Order. ", e); return new ResponseEntity<ServiceOrder>(HttpStatus.BAD_REQUEST); } catch (Exception e) { log.error("Couldn't serialize response for content type application/json", e); return new ResponseEntity<ServiceOrder>(HttpStatus.INTERNAL_SERVER_ERROR); Loading
src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java +35 −30 Original line number Diff line number Diff line Loading @@ -25,14 +25,7 @@ import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.*; import java.util.stream.Collectors; import com.fasterxml.jackson.core.JsonProcessingException; Loading @@ -45,30 +38,16 @@ import org.apache.commons.logging.LogFactory; import org.etsi.osl.tmf.common.model.Any; import org.etsi.osl.tmf.common.model.EValueType; import org.etsi.osl.tmf.common.model.UserPartRoleType; import org.etsi.osl.tmf.common.model.service.Characteristic; import org.etsi.osl.tmf.common.model.service.Note; import org.etsi.osl.tmf.common.model.service.ResourceRef; import org.etsi.osl.tmf.common.model.service.ServiceRef; import org.etsi.osl.tmf.common.model.service.*; import org.etsi.osl.tmf.prm669.model.RelatedParty; import org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristic; import org.etsi.osl.tmf.scm633.model.ServiceSpecCharacteristicValue; import org.etsi.osl.tmf.scm633.model.ServiceSpecification; import org.etsi.osl.tmf.scm633.reposervices.ServiceSpecificationRepoService; import org.etsi.osl.tmf.sim638.service.ServiceRepoService; import org.etsi.osl.tmf.so641.api.NotFoundException; import org.etsi.osl.tmf.so641.api.ServiceOrderApiRouteBuilderEvents; import org.etsi.osl.tmf.so641.model.ServiceOrder; import org.etsi.osl.tmf.so641.model.ServiceOrderActionType; import org.etsi.osl.tmf.so641.model.ServiceOrderAttributeValueChangeEvent; import org.etsi.osl.tmf.so641.model.ServiceOrderAttributeValueChangeNotification; import org.etsi.osl.tmf.so641.model.ServiceOrderCreate; import org.etsi.osl.tmf.so641.model.ServiceOrderCreateEvent; import org.etsi.osl.tmf.so641.model.ServiceOrderCreateNotification; import org.etsi.osl.tmf.so641.model.ServiceOrderItem; import org.etsi.osl.tmf.so641.model.ServiceOrderRelationship; import org.etsi.osl.tmf.so641.model.ServiceOrderStateChangeEvent; import org.etsi.osl.tmf.so641.model.ServiceOrderStateChangeNotification; import org.etsi.osl.tmf.so641.model.ServiceOrderStateType; import org.etsi.osl.tmf.so641.model.ServiceOrderUpdate; import org.etsi.osl.tmf.so641.model.*; import org.etsi.osl.tmf.so641.repo.ServiceOrderRepository; import org.etsi.osl.tmf.util.KrokiClient; import org.hibernate.Hibernate; Loading Loading @@ -319,7 +298,20 @@ public class ServiceOrderRepoService { } @Transactional public ServiceOrder addServiceOrder(@Valid ServiceOrderCreate serviceOrderCreate) { public ServiceOrder addServiceOrder(@Valid ServiceOrderCreate serviceOrderCreate) throws NotFoundException { // Ensure that all Services Specifications exist List <ServiceOrderItem> serviceOrderItemList = serviceOrderCreate.getOrderItem(); for (ServiceOrderItem serviceOrderItem: serviceOrderItemList) { ServiceRestriction serviceRestriction = serviceOrderItem.getService(); ServiceSpecificationRef serviceSpecificationRef = serviceRestriction.getServiceSpecification(); String serviceSpecificationId = serviceSpecificationRef.getId(); ServiceSpecification serviceSpecification = serviceSpecRepoService.findByUuid(serviceSpecificationId); if (serviceSpecification == null) throw new NotFoundException(400, "There is no Service Specification with Id: " + serviceSpecificationId); } ServiceOrder so = new ServiceOrder(); so.setOrderDate(OffsetDateTime.now(ZoneOffset.UTC)); so.setCategory(serviceOrderCreate.getCategory()); Loading Loading @@ -539,6 +531,7 @@ public class ServiceOrderRepoService { ServiceOrder so = this.findByUuid(id); boolean stateChanged = false; boolean expectedCompletionDateChanged = false; //logger.info("so:" + so.toString()); for (ServiceOrderItem oi : so.getOrderItem() ) { Loading Loading @@ -590,7 +583,7 @@ public class ServiceOrderRepoService { if ( serviceOrderUpd.getExpectedCompletionDate()!= null ) { so.setExpectedCompletionDate(serviceOrderUpd.getExpectedCompletionDate()); expectedCompletionDateChanged = true; } if ( serviceOrderUpd.getStartDate()!= null ) { Loading Loading @@ -655,8 +648,17 @@ public class ServiceOrderRepoService { so.addNoteItem(noteItem); } // Update each Service's end date to the updated Service Order's expected completion date if (expectedCompletionDateChanged) { List<String> services = serviceRepoService.getServicesFromOrderID(id); for (String serviceId : services) { logger.debug("Will delegate updated SO expected completion date " + so.getExpectedCompletionDate() + " to service with id = " + serviceId); org.etsi.osl.tmf.sim638.model.Service service = serviceRepoService.findByUuid(serviceId); service.setEndDate(so.getExpectedCompletionDate()); } } Loading Loading @@ -827,12 +829,15 @@ public class ServiceOrderRepoService { } public String addServiceOrderReturnEager(@Valid ServiceOrderCreate serviceOrderCreate) { ServiceOrder so = this.addServiceOrder(serviceOrderCreate); try { ServiceOrder so = this.addServiceOrder(serviceOrderCreate); return this.getServiceOrderEagerAsString( so.getUuid()); } catch (JsonProcessingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } Loading
src/test/java/org/etsi/osl/services/api/ServiceOrderIntegrationTest.java +14 −3 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import java.net.URI; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.util.ArrayList; import java.util.List; import org.apache.camel.CamelContext; import org.apache.camel.RoutesBuilder; Loading Loading @@ -356,8 +357,18 @@ public class ServiceOrderIntegrationTest { assertThat(sspeccr1SO).isNotNull(); // Ensure that all Services' end dates were updated correctly boolean allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = true; List<String> services = serviceRepoService.getServicesFromOrderID(responseSO.getId()); for (String serviceId : services) { Service service = serviceRepoService.findByUuid(serviceId); if (!service.getEndDate().equals(responseSOUpd.getExpectedCompletionDate())) { allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate = false; break; } } assertThat(allSupportingServicesEndDatesUpdatedToServiceOrderExpectedCompletionDate).isTrue(); } @WithMockUser(username="osadmin", roles = {"USER"}) Loading
src/test/java/org/etsi/osl/services/api/so641/ServiceOrderApiControllerTest.java +41 −1 Original line number Diff line number Diff line Loading @@ -89,6 +89,15 @@ public class ServiceOrderApiControllerTest { } @WithMockUser(username="osadmin", roles = {"ADMIN","USER"}) @Test public void testCreateServiceOrderWithNonExistingServiceSpecification() throws Exception { createServiceOrderWithNonExistingServiceSpecification(); assertThat( serviceOrderRepoService.findAll().size() ).isEqualTo( FIXED_BOOTSTRAPS_SPECS ); } @WithMockUser(username="osadmin", roles = {"ADMIN","USER"}) @Test public void testDeleteServiceOrder() throws Exception { Loading Loading @@ -278,4 +287,35 @@ public class ServiceOrderApiControllerTest { return responsesSpec; } private void createServiceOrderWithNonExistingServiceSpecification() throws Exception { assertThat( serviceOrderRepoService.findAll().size() ).isEqualTo( FIXED_BOOTSTRAPS_SPECS); ServiceOrderCreate serviceOrder = new ServiceOrderCreate(); serviceOrder.setCategory("Test Category"); serviceOrder.setDescription("A Test Service Order"); serviceOrder.setRequestedStartDate(OffsetDateTime.now(ZoneOffset.UTC).toString()); serviceOrder.setRequestedCompletionDate(OffsetDateTime.now(ZoneOffset.UTC).toString()); ServiceOrderItem soi = new ServiceOrderItem(); serviceOrder.getOrderItem().add(soi); soi.setState(ServiceOrderStateType.ACKNOWLEDGED); ServiceRestriction serviceRestriction = new ServiceRestriction(); ServiceSpecificationRef aServiceSpecificationRef = new ServiceSpecificationRef(); aServiceSpecificationRef.setId("A random non-existing Id"); aServiceSpecificationRef.setName("A random non-existing name"); serviceRestriction.setServiceSpecification(aServiceSpecificationRef); serviceRestriction.setName("aServiceRestriction"); soi.setService(serviceRestriction); mvc .perform(MockMvcRequestBuilders.post("/serviceOrdering/v4/serviceOrder") .with( SecurityMockMvcRequestPostProcessors.csrf()) .contentType(MediaType.APPLICATION_JSON).content(JsonUtils.toJson(serviceOrder))) .andExpect(status().isBadRequest()).andReturn().getResponse().getContentAsString(); } } No newline at end of file