Loading src/main/java/org/etsi/osl/tmf/sim638/service/ServiceRepoService.java +67 −17 Original line number Diff line number Diff line Loading @@ -24,11 +24,14 @@ import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; Loading Loading @@ -350,6 +353,22 @@ public class ServiceRepoService { .orElse(null); } /** * @param id * @param servUpd * @param triggerServiceActionQueue * @param updatedFromParentService * @param updatedFromChildService * @return */ /** * @param id * @param servUpd * @param triggerServiceActionQueue * @param updatedFromParentService * @param updatedFromChildService * @return */ /** * @param id * @param servUpd Loading Loading @@ -572,6 +591,28 @@ public class ServiceRepoService { } /** * Check here if the characteristics changed are of interest for LCM rules and further processing by the orchestrator */ Characteristic lcmchar = service.getServiceCharacteristicByName("_LCM_CHARACTERISTICS_"); if ( lcmchar != null && lcmchar.getValue() != null && !lcmchar.getValue().getValue().equals("all") && !charChangedForNotes.equals("")) { // Split the strings into arrays of values String[] arrayA = lcmchar.getValue().getValue().split(","); String[] arrayB = charChangedForNotes.split(","); // Convert strb values into a set for faster lookup Set<String> setB = new HashSet<>(Arrays.asList(arrayB)); // Check if any value from stra exists in strb boolean valueExists = false; for (String value : arrayA) { if (setB.contains(value)) { valueExists = true; // A common value exists } } if (!valueExists) { serviceCharacteristicChanged=false; } } if (charChangedForNotes.contains( "reconciledAt") ) { //this is just a sync message, so we need to igore such changes serviceCharacteristicChanged = false; Loading @@ -597,7 +638,13 @@ public class ServiceRepoService { service = this.serviceRepo.save( service ); String requestedServiceAsJson = null; try { requestedServiceAsJson = mapper.writeValueAsString( service ); } catch (JsonProcessingException e) { logger.error("cannot umarshall service: " + service.getName() ); e.printStackTrace(); } /** * Save in ServiceActionQueueItem Loading @@ -617,7 +664,7 @@ public class ServiceRepoService { } if ( saqi.getAction() != ServiceActionQueueAction.NONE ) { this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } } Loading @@ -629,10 +676,10 @@ public class ServiceRepoService { saqi.setOriginalServiceInJSON( originaServiceAsJson ); if ( service.getState().equals( ServiceStateType.ACTIVE) ) { saqi.setAction( ServiceActionQueueAction.EVALUATE_STATE_CHANGE_TOACTIVE ); this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); }else if ( previousState!=null && previousState.equals( ServiceStateType.ACTIVE) ) { saqi.setAction( ServiceActionQueueAction.EVALUATE_STATE_CHANGE_TOINACTIVE ); this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } } Loading @@ -644,7 +691,7 @@ public class ServiceRepoService { if ( serviceCharacteristicChangedContainsPrimitive ) { saqi.setAction( ServiceActionQueueAction.EVALUATE_CHARACTERISTIC_CHANGED_MANODAY2 ); } this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } Loading @@ -670,7 +717,7 @@ public class ServiceRepoService { e.printStackTrace(); } saqi.setAction(ServiceActionQueueAction.EVALUATE_CHILD_CHARACTERISTIC_CHANGED); this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } } Loading @@ -685,7 +732,7 @@ public class ServiceRepoService { e.printStackTrace(); } saqi.setAction(ServiceActionQueueAction.EVALUATE_CHILD_STATE_CHANGE ); this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } } Loading Loading @@ -956,17 +1003,20 @@ public class ServiceRepoService { return (List<ServiceActionQueueItem>) this.serviceActionQueueRepo.findFirst10ByOrderByInsertedDate(); } public ServiceActionQueueItem addServiceActionQueueItem(@Valid ServiceActionQueueItem item) { public ServiceActionQueueItem addServiceActionQueueItem(Service service, @Valid ServiceActionQueueItem item) { logger.debug("Will add ServiceActionQueueItem ServiceRefId: " + item.getServiceRefId() ); Characteristic lcmchar = service.getServiceCharacteristicByName("_LCM_CHARACTERISTICS_"); if ( lcmchar == null || lcmchar.getValue() == null) { //find any similar action inqueue and delete them, so to keep this one as the most recent List<ServiceActionQueueItem> result = this.serviceActionQueueRepo.findByServiceRefIdAndAction(item.getServiceRefId(), item.getAction()); logger.debug("Will add ServiceActionQueueItem ServiceRefId result: " +result.size() ); this.serviceActionQueueRepo.deleteByServiceRefIdAndAction(item.getServiceRefId(), item.getAction()); } return this.serviceActionQueueRepo.save( item); } /** Loading src/test/java/org/etsi/osl/services/api/sim638/ServiceRepoServiceTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -127,7 +127,10 @@ public class ServiceRepoServiceTest { @Test public void testDeleteServiceActionQueueItemByUuid() throws Exception { ServiceActionQueueItem saqi = new ServiceActionQueueItem(); ServiceActionQueueItem saqiResponse = serviceRepoService.addServiceActionQueueItem(saqi); String response = createService(); Service aservice = JsonUtils.toJsonObj(response, Service.class); ServiceActionQueueItem saqiResponse = serviceRepoService.addServiceActionQueueItem(aservice, saqi); String uuid = saqiResponse.getUuid(); serviceRepoService.deleteServiceActionQueueItemByUuid(uuid); Loading Loading
src/main/java/org/etsi/osl/tmf/sim638/service/ServiceRepoService.java +67 −17 Original line number Diff line number Diff line Loading @@ -24,11 +24,14 @@ import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; Loading Loading @@ -350,6 +353,22 @@ public class ServiceRepoService { .orElse(null); } /** * @param id * @param servUpd * @param triggerServiceActionQueue * @param updatedFromParentService * @param updatedFromChildService * @return */ /** * @param id * @param servUpd * @param triggerServiceActionQueue * @param updatedFromParentService * @param updatedFromChildService * @return */ /** * @param id * @param servUpd Loading Loading @@ -572,6 +591,28 @@ public class ServiceRepoService { } /** * Check here if the characteristics changed are of interest for LCM rules and further processing by the orchestrator */ Characteristic lcmchar = service.getServiceCharacteristicByName("_LCM_CHARACTERISTICS_"); if ( lcmchar != null && lcmchar.getValue() != null && !lcmchar.getValue().getValue().equals("all") && !charChangedForNotes.equals("")) { // Split the strings into arrays of values String[] arrayA = lcmchar.getValue().getValue().split(","); String[] arrayB = charChangedForNotes.split(","); // Convert strb values into a set for faster lookup Set<String> setB = new HashSet<>(Arrays.asList(arrayB)); // Check if any value from stra exists in strb boolean valueExists = false; for (String value : arrayA) { if (setB.contains(value)) { valueExists = true; // A common value exists } } if (!valueExists) { serviceCharacteristicChanged=false; } } if (charChangedForNotes.contains( "reconciledAt") ) { //this is just a sync message, so we need to igore such changes serviceCharacteristicChanged = false; Loading @@ -597,7 +638,13 @@ public class ServiceRepoService { service = this.serviceRepo.save( service ); String requestedServiceAsJson = null; try { requestedServiceAsJson = mapper.writeValueAsString( service ); } catch (JsonProcessingException e) { logger.error("cannot umarshall service: " + service.getName() ); e.printStackTrace(); } /** * Save in ServiceActionQueueItem Loading @@ -617,7 +664,7 @@ public class ServiceRepoService { } if ( saqi.getAction() != ServiceActionQueueAction.NONE ) { this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } } Loading @@ -629,10 +676,10 @@ public class ServiceRepoService { saqi.setOriginalServiceInJSON( originaServiceAsJson ); if ( service.getState().equals( ServiceStateType.ACTIVE) ) { saqi.setAction( ServiceActionQueueAction.EVALUATE_STATE_CHANGE_TOACTIVE ); this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); }else if ( previousState!=null && previousState.equals( ServiceStateType.ACTIVE) ) { saqi.setAction( ServiceActionQueueAction.EVALUATE_STATE_CHANGE_TOINACTIVE ); this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } } Loading @@ -644,7 +691,7 @@ public class ServiceRepoService { if ( serviceCharacteristicChangedContainsPrimitive ) { saqi.setAction( ServiceActionQueueAction.EVALUATE_CHARACTERISTIC_CHANGED_MANODAY2 ); } this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } Loading @@ -670,7 +717,7 @@ public class ServiceRepoService { e.printStackTrace(); } saqi.setAction(ServiceActionQueueAction.EVALUATE_CHILD_CHARACTERISTIC_CHANGED); this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } } Loading @@ -685,7 +732,7 @@ public class ServiceRepoService { e.printStackTrace(); } saqi.setAction(ServiceActionQueueAction.EVALUATE_CHILD_STATE_CHANGE ); this.addServiceActionQueueItem(saqi); this.addServiceActionQueueItem(service, saqi); } } Loading Loading @@ -956,17 +1003,20 @@ public class ServiceRepoService { return (List<ServiceActionQueueItem>) this.serviceActionQueueRepo.findFirst10ByOrderByInsertedDate(); } public ServiceActionQueueItem addServiceActionQueueItem(@Valid ServiceActionQueueItem item) { public ServiceActionQueueItem addServiceActionQueueItem(Service service, @Valid ServiceActionQueueItem item) { logger.debug("Will add ServiceActionQueueItem ServiceRefId: " + item.getServiceRefId() ); Characteristic lcmchar = service.getServiceCharacteristicByName("_LCM_CHARACTERISTICS_"); if ( lcmchar == null || lcmchar.getValue() == null) { //find any similar action inqueue and delete them, so to keep this one as the most recent List<ServiceActionQueueItem> result = this.serviceActionQueueRepo.findByServiceRefIdAndAction(item.getServiceRefId(), item.getAction()); logger.debug("Will add ServiceActionQueueItem ServiceRefId result: " +result.size() ); this.serviceActionQueueRepo.deleteByServiceRefIdAndAction(item.getServiceRefId(), item.getAction()); } return this.serviceActionQueueRepo.save( item); } /** Loading
src/test/java/org/etsi/osl/services/api/sim638/ServiceRepoServiceTest.java +4 −1 Original line number Diff line number Diff line Loading @@ -127,7 +127,10 @@ public class ServiceRepoServiceTest { @Test public void testDeleteServiceActionQueueItemByUuid() throws Exception { ServiceActionQueueItem saqi = new ServiceActionQueueItem(); ServiceActionQueueItem saqiResponse = serviceRepoService.addServiceActionQueueItem(saqi); String response = createService(); Service aservice = JsonUtils.toJsonObj(response, Service.class); ServiceActionQueueItem saqiResponse = serviceRepoService.addServiceActionQueueItem(aservice, saqi); String uuid = saqiResponse.getUuid(); serviceRepoService.deleteServiceActionQueueItemByUuid(uuid); Loading