Conversation
c877a38 to
677b149
Compare
|
Nice that is a good start! 👍
ChatGPT suggest doing this via the factory builder: JsonFactory factory = JsonFactory.builder()
.enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN)
.build();
JsonMapper mapper = new JsonMapper(factory); |
|
My GPT says that it is no longer needed and thus removed. Jackson 3 should keep booleans as strings per default. At least all of our tests seem to pass now as well 🎉 |
There was a problem hiding this comment.
Pull request overview
This PR upgrades the project’s Jackson stack to 3.1.0 (new tools.jackson.* namespace) and updates jollyday-jackson to 2.2.0, adjusting YAML/JSON parsing and related OSGi feature/test wiring accordingly.
Changes:
- Bump Jackson to 3.1.0 and migrate imports/usages from
com.fasterxml.jackson.*totools.jackson.*where applicable. - Update Karaf features/BOMs/itest run configurations to install and resolve the new Jackson/SnakeYAML artifacts, and bump Jollyday to 2.2.0.
- Adapt YAML model parsing/serialization, marketplace YAML handlers, websocket JSON handling, and Swagger OpenAPI serialization to the updated Jackson APIs.
Reviewed changes
Copilot reviewed 39 out of 39 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/upgradetool/src/main/java/org/openhab/core/tools/internal/YamlConfigurationV1TagsUpgrader.java | Switch upgrader YAML processing to Jackson 3 YAML mapper/API updates. |
| tools/upgradetool/pom.xml | Update Jackson dependency coordinates to tools.jackson.* and rely on parent properties. |
| pom.xml | Set global Jackson version properties (Jackson 3.1.0 + annotations 2.21). |
| itests/org.openhab.core.thing.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.model.thing.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.model.script.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.model.rule.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.model.item.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.ephemeris.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + Jollyday 2.2.0. |
| itests/org.openhab.core.automation.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.automation.module.timer.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.automation.module.script.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.automation.module.core.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| itests/org.openhab.core.automation.integration.tests/itest.bndrun | Update itest bundles for tools.jackson 3 + snakeyaml-engine + Jollyday 2.2.0. |
| features/karaf/openhab-tp/src/main/feature/feature.xml | Update Karaf target platform features for Jackson 3/Jollyday 2.2.0 and add temporary Jackson 2.x bundles for swagger. |
| bundles/org.openhab.core.model.yaml/src/test/java/org/openhab/core/model/yaml/internal/semantics/YamlSemanticTagDTOTest.java | Update test imports to tools.jackson ObjectMapper. |
| bundles/org.openhab.core.model.yaml/src/test/java/org/openhab/core/model/yaml/internal/items/YamlMetadataDTOSerializerTest.java | Use YAMLMapper/tools.jackson for serializer tests. |
| bundles/org.openhab.core.model.yaml/src/test/java/org/openhab/core/model/yaml/internal/items/YamlMetadataDTODeserializerTest.java | Use YAMLMapper/tools.jackson for deserializer tests. |
| bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/YamlModelWrapper.java | Update JsonNode import to tools.jackson. |
| bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/YamlModelRepositoryImpl.java | Migrate YAML repository implementation to Jackson 3 mapper/features/APIs. |
| bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/rules/YamlRuleTemplateDTO.java | Update Jackson exception/node APIs for rule template DTO parsing. |
| bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/rules/YamlRuleDTO.java | Update Jackson exception/node APIs for rule DTO parsing. |
| bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/items/YamlMetadataDTOSerializer.java | Port custom serializer to Jackson 3 serializer APIs. |
| bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/items/YamlMetadataDTODeserializer.java | Port custom deserializer to Jackson 3 deserializer APIs. |
| bundles/org.openhab.core.model.yaml/src/main/java/org/openhab/core/model/yaml/internal/items/YamlMetadataDTO.java | Update serialize/deserialize annotation imports to tools.jackson. |
| bundles/org.openhab.core.model.yaml/pom.xml | Add explicit jackson-annotations dependency (com.fasterxml) for mixed-namespace setup. |
| bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketConnection.java | Switch websocket JSON parsing/serialization to tools.jackson APIs/exceptions. |
| bundles/org.openhab.core.io.websocket.audio/pom.xml | Add Jackson dependency (currently via yaml artifact). |
| bundles/org.openhab.core.io.rest.swagger/src/main/java/org/openhab/core/io/rest/swagger/impl/OpenApiResource.java | Replace swagger Json.mapper() usage with tools.jackson mapper for OpenAPI output. |
| bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/parser/jackson/TemplateYAMLParser.java | Update Jackson TypeReference/JsonNode imports to tools.jackson. |
| bundles/org.openhab.core.automation/src/main/java/org/openhab/core/automation/internal/parser/jackson/AbstractJacksonYAMLParser.java | Replace YAMLFactory mapper construction with YAMLMapper builder for Jackson 3. |
| bundles/org.openhab.core.automation/pom.xml | Add tools.jackson YAML dataformat dependency for YAML parsing. |
| bundles/org.openhab.core.addon.marketplace/src/main/java/org/openhab/core/addon/marketplace/internal/community/SerializedNameAnnotationIntrospector.java | Update AnnotationIntrospector overrides to Jackson 3 signatures/packages. |
| bundles/org.openhab.core.addon.marketplace/src/main/java/org/openhab/core/addon/marketplace/internal/community/CommunityUIWidgetAddonHandler.java | Switch YAML mapper creation/config to YAMLMapper builder + tools.jackson exceptions. |
| bundles/org.openhab.core.addon.marketplace/src/main/java/org/openhab/core/addon/marketplace/internal/community/CommunityTransformationAddonHandler.java | Switch YAML mapper creation/config to YAMLMapper builder + tools.jackson exceptions. |
| bundles/org.openhab.core.addon.marketplace/src/main/java/org/openhab/core/addon/marketplace/internal/community/CommunityBlockLibaryAddonHandler.java | Switch YAML mapper creation/config to YAMLMapper builder + tools.jackson exceptions. |
| bundles/org.openhab.core.addon.marketplace/src/main/java/org/openhab/core/addon/marketplace/internal/automation/MarketplaceRuleTemplateProvider.java | Switch YAML mapper creation to YAMLMapper builder. |
| bom/runtime/pom.xml | Update managed deps to tools.jackson coordinates; bump jollyday-jackson to 2.2.0. |
| bom/compile/pom.xml | Bump jollyday-jackson to 2.2.0. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
I did a full build (including the PR on add-ons) and launched it as fresh install. I installed a few bindings, including HA, Jinjava, androidtv (the ones which still need jackson 2.x). No errors in the log, all in state active. Though, I could not test much, as I don't use them. Though, now we have both old and new jackson installed: The distro can be grabbed from here: @wborn from my side this is finished for now, what is your recommendation how to proceed? |
wborn
left a comment
There was a problem hiding this comment.
It looks good to me! 👍
Do you know if the Eclipse app keeps working with both versions being there?
* Upgrade jackson from 2.21.1 to 3.1.0 * Upgrade jollyday-jackson from 1.8.1 to 2.2.0 * Code adaptation due to changed interfaces Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
…openhab/core/io/websocket/audio/internal/PCMWebSocketConnection.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
…openhab/core/io/websocket/audio/internal/PCMWebSocketConnection.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
…core/model/yaml/internal/YamlModelRepositoryImpl.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
c2b0dd2 to
3ef8e42
Compare
* Upgrade jollyday-jackson from 2.2.0 to 2.3.0 * Add new transitive dependency jspecify 1.0.0 Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
3ef8e42 to
eafa535
Compare
|
@wborn I upgraded jollyday and introduced the new transitive dependency jspecify required since 2.3.0. The app did not resolve without further work, as we still need both snakeyaml versions :-( I still see an issue in the app, not 100% sure yet if I just need to recompile everything.... The cleanest way would probably to get rid of this jackson2/3 hybrid stuff. |
@wborn This is a reaction to your question if we could upgrade to 3.1.0.
There are a few remarks:
objectMapper.enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN);. Maybe @lolodomo has some insights how to proceed? I am lacking expertise in this area :-)