<mavenModuleSetBuild _class='hudson.maven.MavenModuleSetBuild'><action _class='hudson.model.CauseAction'><cause _class='com.cloudbees.jenkins.GitHubPushCause'><shortDescription>Started by GitHub push by gg-dim</shortDescription></cause></action><action></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesorigindim_build_master _class='hudson.plugins.git.util.Build'><buildNumber>26</buildNumber><marked><SHA1>1738146a5cd0dac73eb3de76b8d19b8d7deba934</SHA1><branch><SHA1>1738146a5cd0dac73eb3de76b8d19b8d7deba934</SHA1><name>refs/remotes/origin/dim_build_master</name></branch></marked><revision><SHA1>1738146a5cd0dac73eb3de76b8d19b8d7deba934</SHA1><branch><SHA1>1738146a5cd0dac73eb3de76b8d19b8d7deba934</SHA1><name>refs/remotes/origin/dim_build_master</name></branch></revision></refsremotesorigindim_build_master><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>31</buildNumber><marked><SHA1>81e9e2e5bae01d0b3a7f7406ed03b3107c7e5ed8</SHA1><branch><SHA1>81e9e2e5bae01d0b3a7f7406ed03b3107c7e5ed8</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>81e9e2e5bae01d0b3a7f7406ed03b3107c7e5ed8</SHA1><branch><SHA1>81e9e2e5bae01d0b3a7f7406ed03b3107c7e5ed8</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>81e9e2e5bae01d0b3a7f7406ed03b3107c7e5ed8</SHA1><branch><SHA1>81e9e2e5bae01d0b3a7f7406ed03b3107c7e5ed8</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/DataInMotion/org.eclipse.sensinact.gateway.git</remoteUrl><scmName></scmName></action><action></action><action _class='hudson.maven.reporters.MavenAggregatedArtifactRecord'></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#31</displayName><duration>259826</duration><estimatedDuration>244921</estimatedDuration><fullDisplayName>Eclipse Sensinact #31</fullDisplayName><id>31</id><inProgress>false</inProgress><keepLog>false</keepLog><number>31</number><queueId>158942</queueId><result>SUCCESS</result><timestamp>1723107711600</timestamp><url>https://devel.data-in-motion.biz/jenkins/job/Eclipse%20Sensinact/31/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/api/src/main/java/org/eclipse/sensinact/core/notification/LifecycleNotification.java</affectedPath><affectedPath>core/api/src/main/java/org/eclipse/sensinact/core/notification/ResourceMetaDataNotification.java</affectedPath><affectedPath>southbound/virtual/virtual-temperature-sensor/src/main/java/org/eclipse/sensinact/gateway/southbound/virtual/temperature/VirtualTemperatureDto.java</affectedPath><affectedPath>northbound/rest/src/main/java/org/eclipse/sensinact/northbound/rest/impl/RestNorthbound.java</affectedPath><affectedPath>core/api/src/main/java/org/eclipse/sensinact/core/notification/ResourceActionNotification.java</affectedPath><affectedPath>core/api/src/main/java/org/eclipse/sensinact/core/notification/ResourceDataNotification.java</affectedPath><affectedPath>northbound/rest/src/test/java/org/eclipse/sensinact/northbound/rest/integration/notification/ResourceNotificationsTest.java</affectedPath><affectedPath>northbound/session/session-impl/src/test/java/org/eclipse/sensinact/nortbound/session/integration/SessionSubscribeTest.java</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/notification/impl/NotificationSenderTest.java</affectedPath><affectedPath>northbound/websocket/src/main/java/org/eclipse/sensinact/northbound/ws/impl/WebSocketEndpoint.java</affectedPath><commitId>9d68852a61656138c22694f9e0988f6b0a9a1e95</commitId><timestamp>1716221106000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/timothyjward</absoluteUrl><fullName>timothyjward</fullName></author><authorEmail>timothyjward@apache.org</authorEmail><comment>Include the model name in topic notifications

Filtering at the model level is extremely useful as it permits efficient tracking of multiple providers using the same model. The model URI is required to ensure strict uniqueness, however the model uri is difficult to represent in topic syntax, and would need large amounts of escaping. The trade off is therefore to allow the model name to be used in the topic for rapid checking, with the filter being available for more precise matching if needed.

Signed-off-by: Tim Ward &lt;timothyjward@apache.org&gt;
</comment><date>2024-05-20 17:05:06 +0100</date><id>9d68852a61656138c22694f9e0988f6b0a9a1e95</id><msg>Include the model name in topic notifications</msg><path><editType>edit</editType><file>core/api/src/main/java/org/eclipse/sensinact/core/notification/ResourceMetaDataNotification.java</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/notification/impl/NotificationSenderTest.java</file></path><path><editType>edit</editType><file>northbound/rest/src/test/java/org/eclipse/sensinact/northbound/rest/integration/notification/ResourceNotificationsTest.java</file></path><path><editType>edit</editType><file>core/api/src/main/java/org/eclipse/sensinact/core/notification/ResourceActionNotification.java</file></path><path><editType>edit</editType><file>northbound/rest/src/main/java/org/eclipse/sensinact/northbound/rest/impl/RestNorthbound.java</file></path><path><editType>edit</editType><file>southbound/virtual/virtual-temperature-sensor/src/main/java/org/eclipse/sensinact/gateway/southbound/virtual/temperature/VirtualTemperatureDto.java</file></path><path><editType>edit</editType><file>core/api/src/main/java/org/eclipse/sensinact/core/notification/ResourceDataNotification.java</file></path><path><editType>edit</editType><file>northbound/websocket/src/main/java/org/eclipse/sensinact/northbound/ws/impl/WebSocketEndpoint.java</file></path><path><editType>edit</editType><file>core/api/src/main/java/org/eclipse/sensinact/core/notification/LifecycleNotification.java</file></path><path><editType>edit</editType><file>northbound/session/session-impl/src/test/java/org/eclipse/sensinact/nortbound/session/integration/SessionSubscribeTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/models/provider/src/main/resources/model/sensinact.ecore</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/integration/EMFUpdateServiceTest.java</affectedPath><affectedPath>core/models/provider/src/main/resources/model/sensinact.genmodel</affectedPath><commitId>4410aac42c5a5724db1a96b563512940ce02aeb6</commitId><timestamp>1716543632000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/ggrune</absoluteUrl><fullName>Guido Grune</fullName></author><authorEmail>g.grune@datainmotion.com</authorEmail><comment>use real eClass from service not from reference

Signed-off-by: Guido Grune &lt;g.grune@datainmotion.com&gt;
</comment><date>2024-05-24 11:40:32 +0200</date><id>4410aac42c5a5724db1a96b563512940ce02aeb6</id><msg>use real eClass from service not from reference</msg><path><editType>edit</editType><file>core/models/provider/src/main/resources/model/sensinact.ecore</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/integration/EMFUpdateServiceTest.java</file></path><path><editType>edit</editType><file>core/models/provider/src/main/resources/model/sensinact.genmodel</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ServiceImpl.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/nexus/ModelNexus.java</affectedPath><affectedPath>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/EMFModel.java</affectedPath><affectedPath>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/EMFModelBuilder.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ModelImpl.java</affectedPath><affectedPath>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/EMFService.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ServiceBuilderImpl.java</affectedPath><affectedPath>core/api/src/main/java/org/eclipse/sensinact/core/model/Model.java</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/integration/EMFUpdateServiceTest.java</affectedPath><affectedPath>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/SensinactEMFModelManager.java</affectedPath><affectedPath>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/EMFServiceBuilder.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ModelBuilderImpl.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/impl/SetValueCommand.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/SensinactModelManagerImpl.java</affectedPath><commitId>a648fd6334494a065bf1355a64b37a945dcffeed</commitId><timestamp>1716916215000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/j.albert</absoluteUrl><fullName>j.albert</fullName></author><authorEmail>j.albert@data-in-motion.biz</authorEmail><comment>fixed NPE due to missing service EClass

Signed-off-by: Juergen Albert &lt;j.albert@data-in-motion.biz&gt;
</comment><date>2024-05-28 19:10:15 +0200</date><id>a648fd6334494a065bf1355a64b37a945dcffeed</id><msg>fixed NPE due to missing service EClass</msg><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ServiceBuilderImpl.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ModelImpl.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ModelBuilderImpl.java</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/integration/EMFUpdateServiceTest.java</file></path><path><editType>edit</editType><file>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/SensinactEMFModelManager.java</file></path><path><editType>edit</editType><file>core/api/src/main/java/org/eclipse/sensinact/core/model/Model.java</file></path><path><editType>add</editType><file>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/EMFModel.java</file></path><path><editType>add</editType><file>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/EMFModelBuilder.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/SensinactModelManagerImpl.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/impl/SetValueCommand.java</file></path><path><editType>add</editType><file>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/EMFServiceBuilder.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ServiceImpl.java</file></path><path><editType>add</editType><file>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/model/EMFService.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/nexus/ModelNexus.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>southbound/device-factory/parser-json/src/main/java/org/eclipse/sensinact/gateway/southbound/device/factory/parser/json/JsonRecord.java</affectedPath><commitId>48dcadfad7f718156f564bc1b653e3bb4b793cde</commitId><timestamp>1717159493000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/thomas.calmant</absoluteUrl><fullName>thomas.calmant</fullName></author><authorEmail>thomas.calmant@gmail.com</authorEmail><comment>Fixed wrong import
</comment><date>2024-05-31 14:44:53 +0200</date><id>48dcadfad7f718156f564bc1b653e3bb4b793cde</id><msg>Fixed wrong import</msg><path><editType>edit</editType><file>southbound/device-factory/parser-json/src/main/java/org/eclipse/sensinact/gateway/southbound/device/factory/parser/json/JsonRecord.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttSslAuthTest.java</affectedPath><affectedPath>southbound/mqtt/mqtt-client/src/main/java/org/eclipse/sensinact/gateway/southbound/mqtt/impl/MqttClientHandler.java</affectedPath><affectedPath>southbound/mqtt/mqtt-client/src/main/java/org/eclipse/sensinact/gateway/southbound/mqtt/impl/MqttClientConfiguration.java</affectedPath><affectedPath>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttWebSocketTest.java</affectedPath><commitId>bcf62248b324ea9ac0c998311802771aa62466f1</commitId><timestamp>1717423215000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/thomas.calmant</absoluteUrl><fullName>thomas.calmant</fullName></author><authorEmail>thomas.calmant@gmail.com</authorEmail><comment>Added support for WebSocket MQTT brokers

Including client authentication
</comment><date>2024-06-03 16:00:15 +0200</date><id>bcf62248b324ea9ac0c998311802771aa62466f1</id><msg>Added support for WebSocket MQTT brokers</msg><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/main/java/org/eclipse/sensinact/gateway/southbound/mqtt/impl/MqttClientConfiguration.java</file></path><path><editType>add</editType><file>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttWebSocketTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttSslAuthTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/main/java/org/eclipse/sensinact/gateway/southbound/mqtt/impl/MqttClientHandler.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>southbound/mqtt/.gitignore</affectedPath><commitId>639c4405aafd119506af3c0757157b74065a4646</commitId><timestamp>1717423685000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/thomas.calmant</absoluteUrl><fullName>thomas.calmant</fullName></author><authorEmail>thomas.calmant@gmail.com</authorEmail><comment>Ignore Moquette and Paho files
</comment><date>2024-06-03 16:08:05 +0200</date><id>639c4405aafd119506af3c0757157b74065a4646</id><msg>Ignore Moquette and Paho files</msg><path><editType>add</editType><file>southbound/mqtt/.gitignore</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttSslAuthTest.java</affectedPath><affectedPath>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttDelayedStartTest.java</affectedPath><affectedPath>southbound/mqtt/mqtt-device-factory/integration-test.bndrun</affectedPath><affectedPath>southbound/mqtt/pom.xml</affectedPath><affectedPath>southbound/mqtt/mqtt-device-factory/tests.bnd</affectedPath><affectedPath>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttAuthTest.java</affectedPath><affectedPath>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttTest.java</affectedPath><affectedPath>southbound/mqtt/mqtt-device-factory/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/factory/integration/MqttDeviceFactoryTest.java</affectedPath><affectedPath>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttWebSocketTest.java</affectedPath><commitId>21a3fa0aee1d040e604b9b01ec8ab86498905ee3</commitId><timestamp>1717424209000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/thomas.calmant</absoluteUrl><fullName>thomas.calmant</fullName></author><authorEmail>thomas.calmant@gmail.com</authorEmail><comment>Upgrade to Moquette 0.17
</comment><date>2024-06-03 16:16:49 +0200</date><id>21a3fa0aee1d040e604b9b01ec8ab86498905ee3</id><msg>Upgrade to Moquette 0.17</msg><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttSslAuthTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttAuthTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttWebSocketTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-device-factory/tests.bnd</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-device-factory/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/factory/integration/MqttDeviceFactoryTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/test/MqttDelayedStartTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-device-factory/integration-test.bndrun</file></path><path><editType>edit</editType><file>southbound/mqtt/pom.xml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>southbound/mqtt/mqtt-device-factory/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/factory/integration/MqttDeviceFactoryTest.java</affectedPath><affectedPath>southbound/mqtt/mqtt-device-factory/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/factory/integration/MqttWSDeviceFactoryTest.java</affectedPath><commitId>5bd0ac64fe42679f53052062d08496c362b0091f</commitId><timestamp>1717495402000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/thomas.calmant</absoluteUrl><fullName>thomas.calmant</fullName></author><authorEmail>thomas.calmant@gmail.com</authorEmail><comment>Updated MQTT device factory tests for WS support
</comment><date>2024-06-04 12:03:22 +0200</date><id>5bd0ac64fe42679f53052062d08496c362b0091f</id><msg>Updated MQTT device factory tests for WS support</msg><path><editType>add</editType><file>southbound/mqtt/mqtt-device-factory/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/factory/integration/MqttWSDeviceFactoryTest.java</file></path><path><editType>edit</editType><file>southbound/mqtt/mqtt-device-factory/src/test/java/org/eclipse/sensinact/gateway/southbound/mqtt/factory/integration/MqttDeviceFactoryTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>southbound/mqtt/mqtt-client/src/main/java/org/eclipse/sensinact/gateway/southbound/mqtt/impl/MqttClientHandler.java</affectedPath><commitId>79587d09e665043bd54730da0aff1c64bd4ec194</commitId><timestamp>1717495436000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/thomas.calmant</absoluteUrl><fullName>thomas.calmant</fullName></author><authorEmail>thomas.calmant@gmail.com</authorEmail><comment>Avoid trying to reconnect a null MQTT client
</comment><date>2024-06-04 12:03:56 +0200</date><id>79587d09e665043bd54730da0aff1c64bd4ec194</id><msg>Avoid trying to reconnect a null MQTT client</msg><path><editType>edit</editType><file>southbound/mqtt/mqtt-client/src/main/java/org/eclipse/sensinact/gateway/southbound/mqtt/impl/MqttClientHandler.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ModelImpl.java</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/model/nexus/impl/NexusTest.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/nexus/ModelNexus.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/SensinactModelManagerImpl.java</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/model/impl/ModelBuildingTest.java</affectedPath><commitId>d221b6126804814251557f7d4cda8d11e7c9300d</commitId><timestamp>1718189135000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/timothyjward</absoluteUrl><fullName>timothyjward</fullName></author><authorEmail>timothyjward@apache.org</authorEmail><comment>Implement model deletion in the Model Manager

The model manager API provides a deletion method, but this was not implemented. This commit implements deletion logic, which delegates to the Model Nexus. The Model Nexus:

1. Finds the Model
2. If found it deletes any and all providers using the model, then it deletes the model from its owning EPackage
3. If the EPackage is now empty of models then the EPackage is removed from the Model Nexus

The ModelImpl has also been updated to check the the model is still registered before allowing any action. This prevents deleted models from being used after they are deleted.

Signed-off-by: Tim Ward &lt;timothyjward@apache.org&gt;
</comment><date>2024-06-12 11:45:35 +0100</date><id>d221b6126804814251557f7d4cda8d11e7c9300d</id><msg>Implement model deletion in the Model Manager</msg><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/nexus/ModelNexus.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/ModelImpl.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/model/impl/SensinactModelManagerImpl.java</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/model/nexus/impl/NexusTest.java</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/model/impl/ModelBuildingTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/api/src/main/java/org/eclipse/sensinact/core/twin/SensinactDigitalTwin.java</affectedPath><commitId>6eebd84301fc3794c5a9dd773c3bcde0d8733afe</commitId><timestamp>1718207057000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/timothyjward</absoluteUrl><fullName>timothyjward</fullName></author><authorEmail>timothyjward@apache.org</authorEmail><comment>Expose #getProviders(String modelPackageUri, String model) from the twin

The method getProviders(String, String) existed in the EMF Twin, but not the base twin. As we already use the model package uri extensively in that interface we should expose it here as well.

Signed-off-by: Tim Ward &lt;timothyjward@apache.org&gt;
</comment><date>2024-06-12 16:44:17 +0100</date><id>6eebd84301fc3794c5a9dd773c3bcde0d8733afe</id><msg>Expose #getProviders(String modelPackageUri, String model) from the twin</msg><path><editType>edit</editType><file>core/api/src/main/java/org/eclipse/sensinact/core/twin/SensinactDigitalTwin.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/dto/impl/AbstractUpdateDto.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/whiteboard/impl/SensinactWhiteboard.java</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/command/impl/WhiteboardImplTest.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/extract/impl/EMFGenericDtoDataExtractor.java</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/extract/impl/CustomBaseValueDtoExtractorTest.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/extract/impl/GenericDtoDataExtractor.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/extract/impl/AnnotationMapping.java</affectedPath><affectedPath>core/annotation/src/main/java/org/eclipse/sensinact/core/annotation/dto/NullAction.java</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/extract/impl/GenericDtoExtractorTest.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/impl/SetValueCommand.java</affectedPath><commitId>068be1017ad07f297a0316652e66e9dec2412304</commitId><timestamp>1718714782000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/timothyjward</absoluteUrl><fullName>timothyjward</fullName></author><authorEmail>timothyjward@apache.org</authorEmail><comment>Add support for nullable data which should not create a resource

In some cases null is a valid value to return, but should not be used to initialize a resource. For example if a DTO contains some optional resources which may never be set for some providers, but will be set for others, and those resources may be null, then this was not previously possible

Signed-off-by: Tim Ward &lt;timothyjward@apache.org&gt;
</comment><date>2024-06-18 13:46:22 +0100</date><id>068be1017ad07f297a0316652e66e9dec2412304</id><msg>Add support for nullable data which should not create a resource</msg><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/extract/impl/EMFGenericDtoDataExtractor.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/extract/impl/GenericDtoDataExtractor.java</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/command/impl/WhiteboardImplTest.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/extract/impl/AnnotationMapping.java</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/extract/impl/GenericDtoExtractorTest.java</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/extract/impl/CustomBaseValueDtoExtractorTest.java</file></path><path><editType>edit</editType><file>core/annotation/src/main/java/org/eclipse/sensinact/core/annotation/dto/NullAction.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/dto/impl/AbstractUpdateDto.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/whiteboard/impl/SensinactWhiteboard.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/impl/SetValueCommand.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/api/src/main/java/org/eclipse/sensinact/core/push/dto/GenericDto.java</affectedPath><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/extract/impl/EMFGenericDtoDataExtractor.java</affectedPath><affectedPath>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/dto/EMFGenericDto.java</affectedPath><commitId>61101a6c9a361235909f11624cf1e8ea199fb126</commitId><timestamp>1718721481000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/timothyjward</absoluteUrl><fullName>timothyjward</fullName></author><authorEmail>timothyjward@apache.org</authorEmail><comment>Reinstate final modifier for GenericDto

The EMF dto altered the GenericDto so that it could extend it. The GenericDto was intentionally final to prevent usage mistakes in the API. There are few fields and we should copy them.

Signed-off-by: Tim Ward &lt;timothyjward@apache.org&gt;
</comment><date>2024-06-18 15:38:01 +0100</date><id>61101a6c9a361235909f11624cf1e8ea199fb126</id><msg>Reinstate final modifier for GenericDto</msg><path><editType>edit</editType><file>core/api/src/main/java/org/eclipse/sensinact/core/push/dto/GenericDto.java</file></path><path><editType>edit</editType><file>core/emf-api/src/main/java/org/eclipse/sensinact/core/emf/dto/EMFGenericDto.java</file></path><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/extract/impl/EMFGenericDtoDataExtractor.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>core/impl/src/main/java/org/eclipse/sensinact/core/impl/SetValueCommand.java</affectedPath><affectedPath>core/impl/src/test/java/org/eclipse/sensinact/core/integration/DataUpdateServiceTest.java</affectedPath><commitId>c9be1b379b44dcb0c5400ff44d4664ab3202c764</commitId><timestamp>1718728864000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/timothyjward</absoluteUrl><fullName>timothyjward</fullName></author><authorEmail>timothyjward@apache.org</authorEmail><comment>Fix missing check in SetValueCommand

The UPDATE_IF_PRESENT logic would always run even if the data value was not null. This has been fixed and regression tests added for all NullAction behaviours.

Signed-off-by: Tim Ward &lt;timothyjward@apache.org&gt;
</comment><date>2024-06-18 17:41:04 +0100</date><id>c9be1b379b44dcb0c5400ff44d4664ab3202c764</id><msg>Fix missing check in SetValueCommand</msg><path><editType>edit</editType><file>core/impl/src/main/java/org/eclipse/sensinact/core/impl/SetValueCommand.java</file></path><path><editType>edit</editType><file>core/impl/src/test/java/org/eclipse/sensinact/core/integration/DataUpdateServiceTest.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>southbound/device-factory/device-factory-core/src/main/java/org/eclipse/sensinact/gateway/southbound/device/factory/impl/FactoryParserHandler.java</affectedPath><commitId>ec12f6bd8fb171106dde6afa780a780e1dde1b22</commitId><timestamp>1718896541000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/j.albert</absoluteUrl><fullName>j.albert</fullName></author><authorEmail>j.albert@data-in-motion.biz</authorEmail><comment>removed renaming in Device Factory

Signed-off-by: Juergen Albert &lt;j.albert@data-in-motion.biz&gt;
</comment><date>2024-06-20 17:15:41 +0200</date><id>ec12f6bd8fb171106dde6afa780a780e1dde1b22</id><msg>removed renaming in Device Factory</msg><path><editType>edit</editType><file>southbound/device-factory/device-factory-core/src/main/java/org/eclipse/sensinact/gateway/southbound/device/factory/impl/FactoryParserHandler.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>southbound/history/timescale-provider/src/main/java/org/eclipse/sensinact/gateway/southbound/history/timescale/TimescaleHistoricalStore.java</affectedPath><commitId>81e9e2e5bae01d0b3a7f7406ed03b3107c7e5ed8</commitId><timestamp>1723107684000</timestamp><author><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/ggrune</absoluteUrl><fullName>Guido Grune</fullName></author><authorEmail>g.grune@datainmotion.com</authorEmail><comment>Fix logging of errors

Signed-off-by: Guido Grune &lt;g.grune@datainmotion.com&gt;
</comment><date>2024-08-08 11:01:24 +0200</date><id>81e9e2e5bae01d0b3a7f7406ed03b3107c7e5ed8</id><msg>Fix logging of errors</msg><path><editType>edit</editType><file>southbound/history/timescale-provider/src/main/java/org/eclipse/sensinact/gateway/southbound/history/timescale/TimescaleHistoricalStore.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/thomas.calmant</absoluteUrl><fullName>thomas.calmant</fullName></culprit><culprit><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/j.albert</absoluteUrl><fullName>j.albert</fullName></culprit><culprit><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/ggrune</absoluteUrl><fullName>Guido Grune</fullName></culprit><culprit><absoluteUrl>https://devel.data-in-motion.biz/jenkins/user/timothyjward</absoluteUrl><fullName>timothyjward</fullName></culprit><mavenArtifacts></mavenArtifacts><mavenVersionUsed>3.8.4</mavenVersionUsed></mavenModuleSetBuild>