diff --git a/src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiController.java b/src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiController.java index 446be9d7072cd69730b9766188dfc2c1eb1730dc..bd0a98d10a33c582bcbe235fad111bca33d0ff79 100644 --- a/src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiController.java +++ b/src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiController.java @@ -99,6 +99,7 @@ public class ServiceOrderApiController implements ServiceOrderApi { log.info("authentication= " + principal.toString()); String extInfo = null; + Boolean autoAcknowledge = false; try { @@ -118,27 +119,24 @@ public class ServiceOrderApiController implements ServiceOrderApi { extInfo, serviceOrder.getRelatedParty())); } - else if ( principal instanceof UsernamePasswordAuthenticationToken ) { + else if ( principal instanceof UsernamePasswordAuthenticationToken token) { serviceOrder.setRelatedParty(AddUserAsOwnerToRelatedParties.addUser( - principal.getName(), + token.getName(), //user.getId()+"", null, UserPartRoleType.REQUESTER, extInfo, serviceOrder.getRelatedParty())); + + autoAcknowledge = token.getAuthorities().stream().anyMatch( s -> s.getAuthority().equals("ROLE_OSL_AUTOACK_ORDER")); + } }finally { } - - - - - - - ServiceOrder c = serviceOrderRepoService.addServiceOrder(serviceOrder); + ServiceOrder c = serviceOrderRepoService.addServiceOrder(serviceOrder, autoAcknowledge); return new ResponseEntity(c, HttpStatus.OK); diff --git a/src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiRouteBuilder.java b/src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiRouteBuilder.java index 04bec431a529799829035102dcc13f60cfb93c42..8f496b3bd0fd53a3b131ea2441ad0c5918da26cf 100644 --- a/src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiRouteBuilder.java +++ b/src/main/java/org/etsi/osl/tmf/so641/api/ServiceOrderApiRouteBuilder.java @@ -123,7 +123,7 @@ public class ServiceOrderApiRouteBuilder extends RouteBuilder { .log(LoggingLevel.INFO, log, CATALOG_ADD_SERVICEORDER + " message received!") .to("log:DEBUG?showBody=true&showHeaders=true").unmarshal() .json(JsonLibrary.Jackson, ServiceOrderCreate.class, true) - .bean(serviceOrderRepoService, "addServiceOrderReturnEager(${body})") + .bean(serviceOrderRepoService, "addServiceOrderReturnEager(${body}, false)") .convertBodyTo(String.class); //creates back a response diff --git a/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java b/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java index 0c9bd56c9e0b712d151593db484136f9476f9bbc..82be662398f10ecca60a56639a61a0de635a8e34 100644 --- a/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java +++ b/src/main/java/org/etsi/osl/tmf/so641/reposervices/ServiceOrderRepoService.java @@ -307,7 +307,7 @@ public class ServiceOrderRepoService { } @Transactional - public ServiceOrder addServiceOrder(@Valid ServiceOrderCreate serviceOrderCreate) throws NotFoundException { + public ServiceOrder addServiceOrder(@Valid ServiceOrderCreate serviceOrderCreate, Boolean autoAcknowledge) throws NotFoundException { // Ensure that all Services Specifications exist List serviceOrderItemList = serviceOrderCreate.getOrderItem(); for (ServiceOrderItem serviceOrderItem: serviceOrderItemList) { @@ -391,9 +391,8 @@ public class ServiceOrderRepoService { noteItem.setDate(OffsetDateTime.now(ZoneOffset.UTC) ); so.addNoteItem(noteItem); - so = this.serviceOrderRepo.saveAndFlush(so); - if (allAcknowledged) { //in the case were order items are automatically acknowledged + if (allAcknowledged || autoAcknowledge ) { //in the case were order items are automatically acknowledged so.setState( ServiceOrderStateType.ACKNOWLEDGED ); so.setStartDate( OffsetDateTime.now(ZoneOffset.UTC) ); noteItem = new Note(); @@ -402,9 +401,9 @@ public class ServiceOrderRepoService { noteItem.setDate(OffsetDateTime.now(ZoneOffset.UTC) ); so.addNoteItem(noteItem); - so = this.serviceOrderRepo.saveAndFlush(so); } - + + so = this.serviceOrderRepo.saveAndFlush(so); raiseSOCreateNotification(so); return so; @@ -858,9 +857,9 @@ public class ServiceOrderRepoService { return null; } - public String addServiceOrderReturnEager(@Valid ServiceOrderCreate serviceOrderCreate) { + public String addServiceOrderReturnEager(@Valid ServiceOrderCreate serviceOrderCreate, Boolean autoCreate) { try { - ServiceOrder so = this.addServiceOrder(serviceOrderCreate); + ServiceOrder so = this.addServiceOrder(serviceOrderCreate, autoCreate); return this.getServiceOrderEagerAsString( so.getUuid()); } catch (JsonProcessingException e) { // TODO Auto-generated catch block diff --git a/src/test/java/org/etsi/osl/services/api/so641/ServiceOrderApiControllerTest.java b/src/test/java/org/etsi/osl/services/api/so641/ServiceOrderApiControllerTest.java index 328bac0290bae0c08dfbc507951beea702c9f56a..21f2429463a27b2d6a4f9f1cdeaaa77265e4ee6a 100644 --- a/src/test/java/org/etsi/osl/services/api/so641/ServiceOrderApiControllerTest.java +++ b/src/test/java/org/etsi/osl/services/api/so641/ServiceOrderApiControllerTest.java @@ -18,6 +18,7 @@ import java.util.Set; import org.apache.commons.io.IOUtils; import org.etsi.osl.services.api.BaseIT; import org.etsi.osl.tmf.JsonUtils; +import org.etsi.osl.tmf.common.model.service.Place; import org.etsi.osl.tmf.common.model.service.ServiceSpecificationRef; import org.etsi.osl.tmf.pm632.model.ContactMedium; import org.etsi.osl.tmf.pm632.model.Individual; @@ -318,7 +319,7 @@ public class ServiceOrderApiControllerTest extends BaseIT { 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); @@ -330,8 +331,17 @@ public class ServiceOrderApiControllerTest extends BaseIT { serviceRestriction.setServiceSpecification(aServiceSpecificationRef); serviceRestriction.setName("aServiceRestriction"); + + Place pi = new Place(); + pi.setName("palcename"); + pi.setRole("local"); + serviceRestriction.addPlaceItem( pi ); + Place pi2 = new Place(); + pi2.setName("palcename2"); + pi2.setRole("local"); + serviceRestriction.addPlaceItem( pi2 ); soi.setService(serviceRestriction); - + String response = mvc .perform(MockMvcRequestBuilders.post("/serviceOrdering/v4/serviceOrder") .with( SecurityMockMvcRequestPostProcessors.csrf()) @@ -343,6 +353,9 @@ public class ServiceOrderApiControllerTest extends BaseIT { assertThat(responseSO.getCategory()).isEqualTo("Test Category"); assertThat(responseSO.getDescription()).isEqualTo("A Test Service Order"); + assertThat(responseSO.getOrderItem().size() ).isEqualTo( 1 ); + assertThat(responseSO.getOrderItem().stream().findFirst().get().getService() ).isNotNull(); + assertThat(responseSO.getOrderItem().stream().findFirst().get().getService().getPlace().size() ).isEqualTo(2); return response;