diff --git a/src/main/java/org/etsi/osl/tmf/sim638/service/ServiceRepoService.java b/src/main/java/org/etsi/osl/tmf/sim638/service/ServiceRepoService.java index c63620bf8f1f10f39a390f68743a4834bc675361..6f7c787d91a530d94befc32ca4162e20ecdfe71b 100644 --- a/src/main/java/org/etsi/osl/tmf/sim638/service/ServiceRepoService.java +++ b/src/main/java/org/etsi/osl/tmf/sim638/service/ServiceRepoService.java @@ -1243,6 +1243,10 @@ public class ServiceRepoService { } + private String normalizeValueType(String valueType) { + return (valueType == null || valueType.isBlank()) ? "" : valueType.trim(); + } + private CharCopyResult copyCharacteristicsFromResource( @Valid Service aService, @Valid ServiceUpdate supd, @Valid Resource res) { Boolean characteristicFoundDifferent = false; @@ -1285,20 +1289,27 @@ public class ServiceRepoService { String characteristicname = kind + resourcename + rChar.getName(); Characteristic servChar = supd.getServiceCharacteristicByName( characteristicname ); - if ( servChar != null && servChar.getValue() != null) { - if (! servChar.getValue().getValue().equals( rChar.getValue().getValue() ) ) { + + if ( servChar != null && servChar.getValue() != null) { + boolean valueChanged = ! servChar.getValue().getValue().equals( rChar.getValue().getValue() ); + boolean typeChanged = ! normalizeValueType( servChar.getValueType() ).equals( normalizeValueType( rChar.getValueType() ) ); + + if ( valueChanged || typeChanged ) { characteristicFoundDifferent = true; - supd.getServiceCharacteristicByName( characteristicname ) .value(new Any( rChar.getValue() )); - logger.debug("====================> update characteristic: " + characteristicname +", value: "+ rChar.getValue().getValue()); + servChar.value( new Any( rChar.getValue() ) ); + servChar.setValueType( rChar.getValueType() ); + + logger.debug("====================> update characteristic: " + characteristicname + ", value: " + rChar.getValue().getValue() + ", valueType: " + rChar.getValueType()); } } else { Characteristic cNew = new Characteristic(); - cNew.setName( characteristicname ); + cNew.setName( characteristicname ); cNew.value( new Any( rChar.getValue() )); + cNew.setValueType( rChar.getValueType()); supd.addServiceCharacteristicItem( cNew ); characteristicFoundDifferent = true; - logger.debug("====================> add New characteristic: " + characteristicname +", value: "+ rChar.getValue().getValue()); + logger.debug("====================> add New characteristic: " + characteristicname +", value: " + rChar.getValue().getValue() + ", valueType: " + rChar.getValueType()); }