From 3b426350d17f1b29a1fbae214b89bfb6247a5e0b Mon Sep 17 00:00:00 2001 From: Tom Cunningham Date: Wed, 14 Jan 2026 19:43:36 -0500 Subject: [PATCH 1/2] Upgrade Jackson to 3.0.3 --- catalog/camel-catalog/pom.xml | 2 +- .../catalog/CamelCatalogJsonSchemaTest.java | 6 +- .../camel/catalog/CamelCatalogTest.java | 4 +- catalog/camel-report-maven-plugin/pom.xml | 2 +- .../camel/maven/htmlxlsx/model/ChildEip.java | 6 +- .../maven/htmlxlsx/model/Components.java | 8 +- .../maven/htmlxlsx/model/EipAttribute.java | 8 +- .../htmlxlsx/process/TestResultParser.java | 6 +- .../XmlToCamelRouteCoverageConverter.java | 8 +- .../process/TestJsonProcessingException.java | 2 +- .../process/XmlToCamelRouteCoverageTest.java | 2 +- components/camel-ai/camel-chatscript/pom.xml | 2 +- .../chatscript/ChatScriptProducer.java | 2 +- .../component/ChatScriptComponentIT.java | 6 +- components/camel-ai/camel-docling/pom.xml | 4 +- .../component/docling/DoclingProducer.java | 4 +- components/camel-ai/camel-huggingface/pom.xml | 2 +- .../AutomaticSpeechRecognitionPredictor.java | 4 +- .../huggingface/tasks/ChatPredictor.java | 6 +- .../tasks/QuestionAnsweringPredictor.java | 2 +- .../tasks/SentenceEmbeddingsPredictor.java | 4 +- .../tasks/TextClassificationPredictor.java | 4 +- .../tasks/TextToSpeechPredictor.java | 4 +- .../ZeroShotClassificationPredictor.java | 4 +- .../agent/LangChain4jAgentProducer.java | 11 +- .../camel-ai/camel-langchain4j-chat/pom.xml | 4 +- .../chat/LangChain4jChatProducer.java | 2 +- .../camel-ai/camel-langchain4j-tools/pom.xml | 5 + .../tools/LangChain4jToolsProducer.java | 61 +- components/camel-ai/camel-neo4j/pom.xml | 4 + .../camel/component/neo4j/Neo4jProducer.java | 4 +- components/camel-ai/camel-openai/pom.xml | 6 +- .../component/openai/OpenAIProducer.java | 2 +- .../src/main/docs/aws-bedrock-component.adoc | 8 +- .../aws2/bedrock/runtime/BedrockProducer.java | 36 +- .../runtime/stream/BedrockStreamHandler.java | 7 +- .../runtime/stream/ClaudeStreamParser.java | 14 +- .../runtime/stream/CohereStreamParser.java | 14 +- .../runtime/stream/LlamaStreamParser.java | 14 +- .../runtime/stream/MistralStreamParser.java | 14 +- .../runtime/stream/StreamResponseParser.java | 10 +- .../runtime/stream/TitanStreamParser.java | 14 +- .../integration/BedrockProducerIT.java | 114 ++-- .../BedrockProducerStreamingIT.java | 14 +- .../camel-aws-secrets-manager/pom.xml | 2 +- .../SecretsManagerPropertiesFunction.java | 8 +- .../vault/CloudTrailReloadTriggerTask.java | 8 +- components/camel-aws/camel-aws2-ddb/pom.xml | 5 + .../Ddb2JsonDataTypeTransformer.java | 4 +- .../camel-azure/camel-azure-cosmosdb/pom.xml | 4 + .../CosmosDbContainerOperations.java | 21 +- .../camel-azure/camel-azure-key-vault/pom.xml | 4 + .../key/vault/EventhubsReloadTriggerTask.java | 8 +- .../key/vault/KeyVaultPropertiesFunction.java | 10 +- .../camel-azure-storage-blob/pom.xml | 6 +- .../camel-azure-storage-queue/pom.xml | 6 +- components/camel-bonita/pom.xml | 2 +- .../bonita/api/BonitaAPIBuilder.java | 2 +- .../bonita/api/util/BonitaAPIUtil.java | 2 +- components/camel-cbor/pom.xml | 4 +- .../cbor/CBORDataFormatConfigurer.java | 6 +- .../camel/component/cbor/CBORDataFormat.java | 48 +- .../cbor/CBORMarshalAllowJMSTypeTest.java | 4 +- .../cbor/CBORObjectListSplitTest.java | 8 +- ...MapperWithNonCBORMapperInRegistryTest.java | 2 +- components/camel-clickup/pom.xml | 10 +- .../clickup/ClickUpWebhookProcessor.java | 2 +- .../clickup/UnixTimestampDeserializer.java | 12 +- .../clickup/UnixTimestampSerializer.java | 12 +- .../component/clickup/model/HistoryItem.java | 4 +- .../model/TimeSpentHistoryItemState.java | 4 +- .../service/ClickUpServiceApiImpl.java | 10 +- ...pWebhookRegistrationAlreadyExistsTest.java | 8 +- .../ClickUpWebhookRegistrationTest.java | 7 +- .../clickup/util/ClickUpMockRoutes.java | 2 +- .../clickup/util/ClickUpTestSupport.java | 2 +- .../camel-cxf/camel-cxf-spring-rest/pom.xml | 4 +- components/camel-cyberark-vault/pom.xml | 2 +- .../CyberArkVaultPropertiesFunction.java | 8 +- .../component/dhis2/Dhis2Converters.java | 2 +- components/camel-dropbox/pom.xml | 4 +- .../camel-elasticsearch-rest-client/pom.xml | 2 +- .../ElasticsearchRestClientProducer.java | 8 +- components/camel-elasticsearch/pom.xml | 2 +- .../es/ElasticsearchConfiguration.java | 2 +- .../component/es/ElasticsearchProducer.java | 15 +- .../ElasticsearchActionRequestConverter.java | 4 +- .../es/integration/ElasticsearchBulkIT.java | 2 +- .../ElasticsearchClusterIndexIT.java | 2 +- ...icsearchGetSearchDeleteExistsUpdateIT.java | 4 +- components/camel-elytron/pom.xml | 2 +- .../FlowableInboundChannelHeaderTest.java | 4 +- .../flowable/FlowableInboundChannelTest.java | 4 +- .../flowable/FlowableOutboundChannelTest.java | 2 +- .../flowable/FlowableRedeployChannelTest.java | 4 +- .../FlowableSendAndReceiveChannelTest.java | 6 +- .../camel-google-firestore/pom.xml | 2 +- .../firestore/GoogleFirestoreProducer.java | 8 +- .../camel-google-secret-manager/pom.xml | 2 +- ...GoogleSecretManagerPropertiesFunction.java | 10 +- .../camel-google/camel-google-sheets/pom.xml | 5 + ...leSheetsJsonStructDataTypeTransformer.java | 15 +- .../sheets/stream/SheetsStreamConsumerIT.java | 20 +- .../vertexai/GoogleVertexAIProducer.java | 2 +- components/camel-graphql/pom.xml | 2 +- .../graphql/GraphqlComponentTest.java | 2 +- .../graphql/server/GraphqlServer.java | 4 +- .../groovy/xml/GroovyXmlDataFormatTest.java | 6 +- components/camel-hashicorp-vault/pom.xml | 2 +- .../camel-huaweicloud-dms/pom.xml | 9 + .../huaweicloud/dms/DMSProducer.java | 22 +- .../camel-huaweicloud-frs/pom.xml | 2 +- .../camel-huaweicloud-functiongraph/pom.xml | 10 + .../apache/camel/FunctionGraphProducer.java | 6 +- .../camel-huaweicloud-iam/pom.xml | 9 + .../huaweicloud/iam/IAMProducer.java | 8 +- .../pom.xml | 2 +- .../camel-huaweicloud-obs/pom.xml | 9 + .../huaweicloud/obs/OBSProducer.java | 8 +- .../huaweicloud/obs/ListObjectsMaxTest.java | 4 +- .../huaweicloud/obs/PutObjectStringTest.java | 2 +- .../huaweicloud/obs/PutObjectTest.java | 2 +- .../camel-huaweicloud-smn/pom.xml | 2 +- .../camel-ibm-secrets-manager/pom.xml | 2 +- .../IBMEventStreamReloadTriggerTask.java | 10 +- components/camel-jackson-avro/pom.xml | 12 + components/camel-jackson-protobuf/pom.xml | 12 + components/camel-jackson/pom.xml | 12 + components/camel-jacksonxml/pom.xml | 12 + components/camel-jolt/pom.xml | 2 +- components/camel-jq/pom.xml | 7 + .../camel/language/jq/JqExpression.java | 4 +- .../apache/camel/language/jq/JqFunctions.java | 6 +- .../apache/camel/language/JqLanguageTest.java | 6 +- .../camel/language/jq/JqCustomScopeTest.java | 4 +- .../language/jq/JqExpressionBodyFnTest.java | 6 +- .../JqExpressionFromHeaderAsStringTest.java | 2 +- .../jq/JqExpressionFromHeaderTest.java | 2 +- .../jq/JqExpressionFromPropertyTest.java | 4 +- .../language/jq/JqExpressionPojoTest.java | 2 +- .../language/jq/JqExpressionSimpleTest.java | 2 +- .../camel/language/jq/JqExpressionTest.java | 8 +- .../camel/language/jq/JqTestSupport.java | 4 +- components/camel-jslt/pom.xml | 2 +- .../jslt/JsltEndpointConfigurer.java | 4 +- .../org/apache/camel/component/jslt/jslt.json | 2 +- .../camel/component/jslt/JsltEndpoint.java | 48 +- .../JsltBigDecimalCustomObjectMapperTest.java | 7 +- .../jsonpatch/JsonPatchProducer.java | 4 +- .../DefaultJsonUriSchemaLoader.java | 4 +- .../jsonvalidator/JsonValidatorComponent.java | 2 +- .../jsonvalidator/JsonValidatorEndpoint.java | 6 +- components/camel-jsonata/pom.xml | 2 +- .../component/jsonata/JsonataEndpoint.java | 2 +- .../jsonata/JsonataArrayInputTest.java | 4 +- components/camel-jsonpath/pom.xml | 4 +- .../apache/camel/jsonpath/JsonPathEngine.java | 2 +- .../jsonpath/jackson/JacksonJsonAdapter.java | 15 +- .../camel/jsonpath/CustomObjectMapper.java | 4 +- .../jsonpath/JsonPathCustomMapperTest.java | 12 +- components/camel-kafka/pom.xml | 2 +- .../component/kafka/transform/DropField.java | 6 +- .../kafka/transform/ExtractField.java | 6 +- .../component/kafka/transform/HoistField.java | 4 +- .../kafka/transform/InsertField.java | 6 +- .../component/kafka/transform/MaskField.java | 6 +- .../transform/MessageTimestampRouter.java | 6 +- .../kafka/transform/ReplaceField.java | 6 +- .../component/kafka/transform/ValueToKey.java | 6 +- .../DefaultKafkaHeaderSerializerTest.java | 4 +- .../kafka/transform/HoistFieldTest.java | 4 +- .../kafka/transform/InsertFieldTest.java | 2 +- .../kafka/transform/MaskFieldTest.java | 4 +- .../kafka/transform/ReplaceFieldTest.java | 4 +- .../clients/producer/KafkaProducerTest.java | 4 +- .../security/KeycloakSecurityHelper.java | 4 +- .../security/KeycloakTokenIntrospector.java | 2 +- .../keycloak/security/KeycloakSecurityIT.java | 4 +- .../security/KeycloakSecurityTestInfraIT.java | 4 +- .../camel-knative/camel-knative-api/pom.xml | 7 +- .../camel/component/knative/spi/Knative.java | 6 +- .../camel-knative-component/pom.xml | 7 +- .../component/knative/KnativeSupport.java | 2 +- .../knative/http/KnativeHttpTest.java | 2 +- .../cluster/utils/LockTestServer.java | 4 +- components/camel-leveldb/pom.xml | 2 +- .../serializer/JacksonLevelDBSerializer.java | 14 +- .../serializer/jackson/BodyDeserializer.java | 19 +- .../serializer/jackson/BodySerializer.java | 20 +- .../serializer/jackson/HolderBodyMixin.java | 4 +- .../jackson/ObjectMapperHelper.java | 25 +- .../LevelDBCustomSerializationTest.java | 23 +- .../service/lra/AbstractLRATestSupport.java | 4 +- components/camel-lumberjack/pom.xml | 2 +- .../lumberjack/io/LumberjackFrameDecoder.java | 2 +- components/camel-metrics/pom.xml | 6 +- .../MetricsMessageHistoryService.java | 15 +- .../routepolicy/MetricsRegistryService.java | 15 +- components/camel-micrometer/pom.xml | 2 +- .../json/AbstractMicrometerService.java | 19 +- .../micrometer/json/MicrometerModule.java | 98 ++-- .../component/mongodb/MongoDbEndpoint.java | 2 +- .../converters/MongoDbFallbackConverter.java | 2 +- components/camel-ocsf/pom.xml | 6 +- components/camel-openapi-java/pom.xml | 12 + components/camel-opensearch/pom.xml | 2 +- .../opensearch/OpensearchConfiguration.java | 2 +- .../opensearch/OpensearchProducer.java | 4 +- .../OpensearchActionRequestConverter.java | 6 +- .../integration/OpensearchBulkIT.java | 2 +- .../integration/OpensearchClusterIndexIT.java | 2 +- ...ensearchGetSearchDeleteExistsUpdateIT.java | 4 +- components/camel-plc4x/pom.xml | 4 +- .../AwsSecretsManagerKeyLifecycleManager.java | 2 +- .../pubnub/PubNubOperationsTest.java | 4 +- components/camel-rest-openapi/pom.xml | 12 +- .../validator/DefaultRequestValidator.java | 2 +- .../RestOpenApiRequestValidationTest.java | 10 +- .../codegen/ObjectDescriptions.java | 2 +- .../salesforce/codegen/SchemaExecution.java | 4 +- .../main/resources/sobject-pojo-optional.vm | 4 +- .../src/main/resources/sobject-pojo.vm | 6 +- .../camel-salesforce-component/pom.xml | 14 +- .../salesforce/SalesforceEndpointConfig.java | 2 +- .../salesforce/StreamingApiConsumer.java | 2 +- .../api/FieldsToNullPropertyFilter.java | 10 +- .../api/MultiSelectPicklistDeserializer.java | 34 +- .../api/MultiSelectPicklistSerializer.java | 10 +- ...StringMultiSelectPicklistDeserializer.java | 25 +- .../StringMultiSelectPicklistSerializer.java | 14 +- .../salesforce/api/TypeReferences.java | 2 +- .../salesforce/api/dto/AbstractDTOBase.java | 2 +- .../component/salesforce/api/dto/Limits.java | 8 +- .../api/dto/approval/ApprovalResult.java | 10 +- .../utils/AsNestedPropertyDeserializer.java | 24 +- .../api/utils/AsNestedPropertyResolver.java | 14 +- .../api/utils/InstantDeserializer.java | 2 +- .../api/utils/InstantSerializer.java | 8 +- .../salesforce/api/utils/JsonUtils.java | 68 +-- .../api/utils/LocalDateTimeDeserializer.java | 12 +- .../api/utils/LocalDateTimeSerializer.java | 8 +- .../api/utils/OffsetDateTimeDeserializer.java | 6 +- .../api/utils/OffsetDateTimeSerializer.java | 8 +- .../api/utils/OffsetTimeDeserializer.java | 2 +- .../api/utils/OffsetTimeSerializer.java | 2 +- .../salesforce/api/utils/TimeModule.java | 10 +- .../api/utils/ZonedDateTimeDeserializer.java | 4 +- .../internal/SalesforceSession.java | 2 +- .../internal/client/AbstractClientBase.java | 2 +- .../client/DefaultAnalyticsApiClient.java | 4 +- .../client/DefaultBulkApiV2Client.java | 4 +- .../client/DefaultCompositeApiClient.java | 12 +- ...tCompositeSObjectCollectionsApiClient.java | 10 +- .../internal/client/DefaultRestClient.java | 6 +- .../client/SalesforceSecurityHandler.java | 2 +- .../internal/processor/JsonRestProcessor.java | 10 +- .../processor/QueryResultIterator.java | 2 +- .../internal/streaming/PushTopicHelper.java | 2 +- .../salesforce/CompositeApiManualIT.java | 2 +- .../salesforce/LoginConfigHelper.java | 4 +- .../component/salesforce/RestApiManualIT.java | 2 +- .../api/MultiSelectPicklistJsonTest.java | 2 +- .../salesforce/api/dto/LimitsTest.java | 2 +- .../salesforce/api/dto/PlatformEventTest.java | 2 +- .../salesforce/api/dto/RecentItemTest.java | 2 +- .../salesforce/api/dto/RestErrorTest.java | 4 +- .../api/dto/approval/ApprovalRequestTest.java | 6 +- .../dto/approval/ApprovalRequestsTest.java | 6 +- .../api/dto/approval/ApprovalResultTest.java | 2 +- .../api/dto/approval/ApprovalsTest.java | 6 +- .../composite/SObjectBatchResponseTest.java | 2 +- .../api/dto/composite/SObjectBatchTest.java | 6 +- .../SObjectCompositeResponseTest.java | 2 +- .../dto/composite/SObjectCompositeTest.java | 4 +- .../composite/SObjectTreeResponseTest.java | 4 +- .../api/dto/composite/SObjectTreeTest.java | 10 +- .../salesforce/api/utils/JsonUtilsTest.java | 6 +- .../api/utils/SalesforceTimeFormatsTest.java | 10 +- .../dto/generated/ContentVersion.java | 2 +- .../salesforce/dto/generated/Document.java | 2 +- .../dto/generated/Line_Item__c.java | 2 +- .../salesforce/dto/generated/MSP.java | 4 +- .../salesforce/dto/generated/StringMSP.java | 4 +- .../salesforce/internal/LoginTokenTest.java | 2 +- .../camel-salesforce-maven-plugin/pom.xml | 6 + .../maven/CamelSalesforceMojoOutputTest.java | 2 +- .../camel/maven/SchemaMojoManualIT.java | 6 +- .../src/test/resources/generated/Asset.java | 2 +- .../generated/Asset_LocalDateTime.java | 2 +- .../src/test/resources/generated/Case.java | 2 +- .../generated/ComplexCalculatedFormula.java | 2 +- .../generated/With_Reference__c.java | 2 +- components/camel-sap-netweaver/pom.xml | 4 +- .../sap/netweaver/NetWeaverProducer.java | 2 +- .../camel-servicenow-component/pom.xml | 14 +- .../ServiceNowComponentConfigurer.java | 4 +- .../ServiceNowEndpointConfigurer.java | 4 +- .../component/servicenow/servicenow.json | 4 +- .../AbstractServiceNowProcessor.java | 10 +- .../servicenow/ServiceNowClient.java | 6 +- .../servicenow/ServiceNowConfiguration.java | 39 +- .../ServiceNowMetaDataExtension.java | 14 +- .../component/servicenow/ServiceNowIT.java | 4 +- .../ServiceNowMetaDataExtensionIT.java | 4 +- .../maven/CamelServiceNowGenerateMojo.java | 6 +- components/camel-splunk-hec/pom.xml | 2 +- .../splunkhec/SplunkHECProducer.java | 2 +- .../camel-spring-ai-tools/pom.xml | 5 + .../springai/tools/SpringAiToolsEndpoint.java | 9 +- .../springai/tools/JsonSchemaTest.java | 4 +- components/camel-stitch/pom.xml | 2 +- .../component/stitch/client/JsonUtils.java | 10 +- .../client/models/StitchRequestBodyTest.java | 6 +- components/camel-stripe/pom.xml | 2 +- .../component/stripe/StripeProducer.java | 2 +- components/camel-swift/pom.xml | 4 +- .../swift/mt/SpringSwiftMtDataFormatTest.java | 2 +- .../swift/mt/SwiftMtDataFormatTest.java | 2 +- .../swift/mx/SpringSwiftMxDataFormatTest.java | 2 +- .../swift/mx/SwiftMxDataFormatTest.java | 2 +- components/camel-tahu/pom.xml | 10 +- .../tahu/handlers/TahuEdgeClientCallback.java | 2 +- components/camel-telegram/pom.xml | 8 +- .../telegram/TelegramWebhookProcessor.java | 2 +- .../telegram/model/IncomingMessage.java | 4 +- .../telegram/model/MessageResult.java | 8 +- .../component/telegram/model/ReplyMarkup.java | 6 +- .../model/UnixTimestampDeserializer.java | 11 +- .../model/UnixTimestampSerializer.java | 11 +- .../model/payments/SuccessfulPayment.java | 14 +- .../telegram/service/TelegramApiClient.java | 2 +- .../service/TelegramAsyncHandler.java | 2 +- .../service/TelegramHandlerRegistry.java | 4 +- .../service/TelegramMessageHandler.java | 2 +- .../TelegramServiceRestBotAPIAdapter.java | 6 +- .../model/SendChatActionMessageTest.java | 6 +- .../telegram/util/TelegramMockRoutes.java | 2 +- .../telegram/util/TelegramTestSupport.java | 2 +- .../telegram/util/TelegramTestUtil.java | 6 +- components/camel-telemetry-dev/pom.xml | 4 +- .../camel/telemetrydev/DevTraceFormat.java | 12 +- .../TelemetryDevTracerTestSupport.java | 2 +- components/camel-undertow/pom.xml | 8 +- ...owProducerThrowExceptionOnFailureTest.java | 4 +- .../rest/RestUndertowHttpPojoTypeTest.java | 2 +- components/camel-wasm/pom.xml | 4 +- .../camel/language/wasm/WasmExpression.java | 2 +- .../org/apache/camel/wasm/WasmSupport.java | 4 +- components/camel-weather/pom.xml | 4 +- .../FreeGeoIpGeoLocationProvider.java | 4 +- components/camel-whatsapp/pom.xml | 8 +- .../WhatsAppServiceRestAPIAdapter.java | 15 +- .../integration/WhatsAppServiceIT.java | 2 +- components/camel-wordpress/pom.xml | 6 +- .../wordpress/api/model/Content.java | 2 +- .../component/wordpress/api/model/Post.java | 2 +- .../wordpress/api/model/Publishable.java | 2 +- .../api/model/PublishableStatus.java | 2 +- .../wordpress/api/model/TextPublishable.java | 2 +- .../component/wordpress/api/model/User.java | 2 +- .../impl/AbstractWordpressServiceAdapter.java | 2 +- components/camel-xj/pom.xml | 6 +- .../component/xj/JsonFileResultHandler.java | 9 +- .../xj/JsonFileResultHandlerFactory.java | 2 +- .../xj/JsonSourceHandlerFactoryImpl.java | 4 +- .../component/xj/JsonStreamResultHandler.java | 6 +- .../xj/JsonStreamResultHandlerFactory.java | 2 +- .../component/xj/JsonStringResultHandler.java | 4 +- .../xj/JsonStringResultHandlerFactory.java | 2 +- .../component/xj/JsonXmlStreamReader.java | 150 +++-- .../camel/component/xj/XJConstants.java | 2 +- .../apache/camel/component/xj/XJEndpoint.java | 2 +- .../component/xj/XmlJsonStreamWriter.java | 42 +- .../camel/component/xj/XJTestUtils.java | 6 +- components/camel-zeebe/pom.xml | 10 +- .../camel/component/zeebe/ZeebeConsumer.java | 8 +- .../zeebe/internal/ZeebeService.java | 8 +- .../processor/AbstractBaseProcessor.java | 8 +- .../zeebe/processor/DeploymentProcessor.java | 6 +- .../zeebe/processor/JobProcessor.java | 6 +- .../zeebe/processor/MessageProcessor.java | 6 +- .../zeebe/processor/ProcessProcessor.java | 6 +- .../component/zeebe/ResourceDeploymentIT.java | 2 +- .../camel/component/zeebe/ThrowErrorIT.java | 2 +- .../component/zeebe/ZeebeConsumerIT.java | 2 +- .../zeebe/model/DeploymentRequestTest.java | 9 +- .../component/zeebe/model/JobRequestTest.java | 12 +- .../zeebe/model/JobResponseTest.java | 11 +- .../zeebe/model/JobWorkerMessageTest.java | 13 +- .../zeebe/model/MessageRequestTest.java | 11 +- .../zeebe/model/MessageResponseTest.java | 11 +- .../model/ProcessDeploymentResponseTest.java | 11 +- .../zeebe/model/ProcessRequestTest.java | 13 +- .../zeebe/model/ProcessResponseTest.java | 11 +- components/camel-zookeeper-master/pom.xml | 4 +- .../zookeepermaster/MasterConsumer.java | 9 +- .../zookeepermaster/group/NodeState.java | 5 +- .../group/internal/ZooKeeperGroup.java | 17 +- .../policy/MasterRoutePolicy.java | 9 +- .../group/internal/ZooKeeperGroupTest.java | 9 +- core/camel-core/pom.xml | 4 +- core/camel-yaml-io/pom.xml | 2 +- .../org/apache/camel/yaml/io/YamlWriter.java | 17 +- .../core/commands/infra/InfraBaseCommand.java | 8 +- .../dsl/jbang/core/common/GistHelper.java | 4 +- .../dsl/jbang/core/common/GitHubHelper.java | 4 +- dsl/camel-jbang/camel-jbang-it/pom.xml | 2 +- .../camel-jbang-plugin-generate/pom.xml | 2 +- .../generate/CodeSchemaGenerator.java | 4 +- .../commands/kubernetes/KubernetesHelper.java | 12 +- .../traits/knative/KnativeTrait.java | 2 +- .../camel-yaml-dsl-maven-plugin/pom.xml | 2 +- .../yaml/GenerateYamlDeserializersMojo.java | 4 +- .../dsl/yaml/GenerateYamlSchemaMojo.java | 14 +- .../camel/maven/dsl/yaml/support/Schema.java | 4 +- .../dsl/yaml/support/YamlProperties.java | 2 +- dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml | 4 +- .../dsl/yaml/support/YamlTestSupport.groovy | 4 +- parent/pom.xml | 13 +- .../resources/META-INF/metadata.json | 544 +++++++++--------- .../camel-test-infra-openai-mock/pom.xml | 4 +- .../openai/mock/EmbeddingRequestHandler.java | 4 +- .../openai/mock/EmbeddingResponseBuilder.java | 2 +- .../test/infra/openai/mock/OpenAIMock.java | 2 +- .../mock/OpenAIMockMultipleToolsTest.java | 4 +- .../openai/mock/OpenAIMockServerHandler.java | 2 +- .../infra/openai/mock/RequestContext.java | 2 +- .../infra/openai/mock/RequestHandler.java | 4 +- .../infra/openai/mock/ResponseBuilder.java | 4 +- test-infra/camel-test-infra-qdrant/pom.xml | 2 +- .../qdrant/services/QdrantInfraService.java | 2 +- .../maven/camel-package-maven-plugin/pom.xml | 2 +- .../CamelTestInfraGenerateMetadataMojo.java | 8 +- .../camel-restdsl-openapi-plugin/pom.xml | 2 +- tooling/openapi-rest-dsl-generator/pom.xml | 6 +- .../openapi/RestDslYamlGenerator.java | 27 +- 436 files changed, 1919 insertions(+), 1795 deletions(-) diff --git a/catalog/camel-catalog/pom.xml b/catalog/camel-catalog/pom.xml index 2ceb9069f5618..7d1d52bf57b55 100644 --- a/catalog/camel-catalog/pom.xml +++ b/catalog/camel-catalog/pom.xml @@ -86,7 +86,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind test diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java index bcdc8f19fc85f..7813471d3a039 100644 --- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java +++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java @@ -23,9 +23,9 @@ import java.util.Map; import java.util.stream.Stream; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JsonProcessingException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.Logger; diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java index 64a3234dedc5a..b3980637a4040 100644 --- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java +++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java @@ -26,8 +26,8 @@ import java.util.Map; import java.util.stream.Stream; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.tooling.model.ArtifactModel; import org.apache.camel.tooling.model.ComponentModel; import org.apache.camel.tooling.model.DataFormatModel; diff --git a/catalog/camel-report-maven-plugin/pom.xml b/catalog/camel-report-maven-plugin/pom.xml index d67dff6a61f08..36b12b5998204 100644 --- a/catalog/camel-report-maven-plugin/pom.xml +++ b/catalog/camel-report-maven-plugin/pom.xml @@ -149,7 +149,7 @@ - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-xml diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/ChildEip.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/ChildEip.java index aeaf7402590d8..c1feffa67ea52 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/ChildEip.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/ChildEip.java @@ -21,9 +21,9 @@ import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JsonProcessingException; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; public class ChildEip { diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/Components.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/Components.java index 17e0063c83910..df33d71d6c746 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/Components.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/Components.java @@ -23,10 +23,10 @@ import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JsonProcessingException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; public class Components { diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/EipAttribute.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/EipAttribute.java index 77ab7af303e15..4428dc9561d10 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/EipAttribute.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/EipAttribute.java @@ -25,10 +25,10 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.type.CollectionType; +import tools.jackson.core.JsonProcessingException; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.type.CollectionType; public class EipAttribute implements Comparable { diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/TestResultParser.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/TestResultParser.java index bcaa5d0865675..28d36af6606f1 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/TestResultParser.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/TestResultParser.java @@ -19,9 +19,9 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JsonProcessingException; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.maven.htmlxlsx.model.CamelContextRouteCoverage; import org.apache.camel.maven.htmlxlsx.model.Components; import org.apache.camel.maven.htmlxlsx.model.Route; diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageConverter.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageConverter.java index ed1839d3b919b..f4082d31a90e0 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageConverter.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageConverter.java @@ -18,10 +18,10 @@ import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import tools.jackson.core.JsonProcessingException; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.dataformat.xml.XmlMapper; import org.apache.camel.maven.htmlxlsx.model.TestResult; public class XmlToCamelRouteCoverageConverter { diff --git a/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/TestJsonProcessingException.java b/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/TestJsonProcessingException.java index 6da33007ad474..8cd77165829f5 100644 --- a/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/TestJsonProcessingException.java +++ b/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/TestJsonProcessingException.java @@ -16,7 +16,7 @@ */ package org.apache.camel.maven.htmlxlsx.process; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JsonProcessingException; public class TestJsonProcessingException extends JsonProcessingException { diff --git a/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageTest.java b/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageTest.java index aeafc4a1909e1..3d345046970c0 100644 --- a/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageTest.java +++ b/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageTest.java @@ -21,7 +21,7 @@ import java.nio.file.Path; import java.nio.file.Paths; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JsonProcessingException; import org.apache.camel.maven.htmlxlsx.model.TestResult; import org.junit.jupiter.api.Test; import org.mockito.Mockito; diff --git a/components/camel-ai/camel-chatscript/pom.xml b/components/camel-ai/camel-chatscript/pom.xml index c648b2f1bb5d7..c71b9bce496a1 100644 --- a/components/camel-ai/camel-chatscript/pom.xml +++ b/components/camel-ai/camel-chatscript/pom.xml @@ -44,7 +44,7 @@ camel-support - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-ai/camel-chatscript/src/main/java/org/apache/camel/component/chatscript/ChatScriptProducer.java b/components/camel-ai/camel-chatscript/src/main/java/org/apache/camel/component/chatscript/ChatScriptProducer.java index ecc50ab65bb0e..9bce5dbaa32a5 100644 --- a/components/camel-ai/camel-chatscript/src/main/java/org/apache/camel/component/chatscript/ChatScriptProducer.java +++ b/components/camel-ai/camel-chatscript/src/main/java/org/apache/camel/component/chatscript/ChatScriptProducer.java @@ -16,9 +16,9 @@ */ package org.apache.camel.component.chatscript; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.support.DefaultProducer; +import tools.jackson.databind.ObjectMapper; /** * The ChatScript producer. diff --git a/components/camel-ai/camel-chatscript/src/test/java/org/apache/camel/component/ChatScriptComponentIT.java b/components/camel-ai/camel-chatscript/src/test/java/org/apache/camel/component/ChatScriptComponentIT.java index 80cb589677ec1..dba64b2e23049 100644 --- a/components/camel-ai/camel-chatscript/src/test/java/org/apache/camel/component/ChatScriptComponentIT.java +++ b/components/camel-ai/camel-chatscript/src/test/java/org/apache/camel/component/ChatScriptComponentIT.java @@ -18,8 +18,6 @@ import java.time.Duration; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.chatscript.ChatScriptMessage; import org.apache.camel.component.mock.MockEndpoint; @@ -32,6 +30,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testcontainers.shaded.org.awaitility.Awaitility; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public class ChatScriptComponentIT extends CamelTestSupport { private static final Logger LOG = LoggerFactory.getLogger(ChatScriptComponentIT.class); @@ -61,7 +61,7 @@ public void configure() { rq = new ObjectMapper().writeValueAsString(rqMsg); rq2 = new ObjectMapper().writeValueAsString(rq2Msg); rq3 = new ObjectMapper().writeValueAsString(rq3Msg); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { LOG.warn("Failed processing JSON: {}", e.getMessage(), e); } from("timer://foo?repeatCount=1") diff --git a/components/camel-ai/camel-docling/pom.xml b/components/camel-ai/camel-docling/pom.xml index afef1ed606158..4ec3509c66922 100644 --- a/components/camel-ai/camel-docling/pom.xml +++ b/components/camel-ai/camel-docling/pom.xml @@ -47,9 +47,9 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson2-version} + ${jackson-version} diff --git a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java index 17bfc05e851b0..a46841a90ca4a 100644 --- a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java +++ b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java @@ -67,8 +67,6 @@ import ai.docling.serve.api.task.response.TaskStatus; import ai.docling.serve.api.task.response.TaskStatusPollResponse; import ai.docling.serve.client.DoclingServeClientBuilderFactory; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.InvalidPayloadException; import org.apache.camel.WrappedFile; @@ -78,6 +76,8 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Producer for Docling document processing operations. diff --git a/components/camel-ai/camel-huggingface/pom.xml b/components/camel-ai/camel-huggingface/pom.xml index 07cd56973e556..4f27c38412920 100644 --- a/components/camel-ai/camel-huggingface/pom.xml +++ b/components/camel-ai/camel-huggingface/pom.xml @@ -37,7 +37,7 @@ camel-support - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/AutomaticSpeechRecognitionPredictor.java b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/AutomaticSpeechRecognitionPredictor.java index b6d2b8316eb8e..4ecae7f9a9801 100644 --- a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/AutomaticSpeechRecognitionPredictor.java +++ b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/AutomaticSpeechRecognitionPredictor.java @@ -21,12 +21,12 @@ import ai.djl.modality.Input; import ai.djl.modality.Output; import ai.djl.modality.audio.Audio; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.huggingface.HuggingFaceConstants; import org.apache.camel.component.huggingface.HuggingFaceEndpoint; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Predictor for the AUTOMATIC_SPEECH_RECOGNITION task, transcribing spoken audio to text. diff --git a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/ChatPredictor.java b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/ChatPredictor.java index d7d163c958c60..db4b97520d59a 100644 --- a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/ChatPredictor.java +++ b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/ChatPredictor.java @@ -24,13 +24,13 @@ import ai.djl.modality.Input; import ai.djl.modality.Output; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.huggingface.HuggingFaceConstants; import org.apache.camel.component.huggingface.HuggingFaceEndpoint; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Predictor for the CHAT task, handling conversational LLM inference with automatic history management. diff --git a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/QuestionAnsweringPredictor.java b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/QuestionAnsweringPredictor.java index ec07bfea7202e..4d5c9f957a295 100644 --- a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/QuestionAnsweringPredictor.java +++ b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/QuestionAnsweringPredictor.java @@ -23,10 +23,10 @@ import ai.djl.modality.Input; import ai.djl.modality.Output; import ai.djl.modality.nlp.qa.QAInput; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.component.huggingface.HuggingFaceConstants; import org.apache.camel.component.huggingface.HuggingFaceEndpoint; +import tools.jackson.databind.ObjectMapper; /** * Predictor for the QUESTION_ANSWERING task, extracting answers from a given context. diff --git a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/SentenceEmbeddingsPredictor.java b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/SentenceEmbeddingsPredictor.java index d6e9649f401e2..6f4c0449d8c36 100644 --- a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/SentenceEmbeddingsPredictor.java +++ b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/SentenceEmbeddingsPredictor.java @@ -21,12 +21,12 @@ import ai.djl.modality.Input; import ai.djl.modality.Output; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.huggingface.HuggingFaceConstants; import org.apache.camel.component.huggingface.HuggingFaceEndpoint; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Predictor for the SENTENCE_EMBEDDINGS task, generating vector embeddings from input text. diff --git a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/TextClassificationPredictor.java b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/TextClassificationPredictor.java index dbcde0668d0b3..cea3984e962ad 100644 --- a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/TextClassificationPredictor.java +++ b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/TextClassificationPredictor.java @@ -23,12 +23,12 @@ import ai.djl.modality.Classifications; import ai.djl.modality.Input; import ai.djl.modality.Output; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.huggingface.HuggingFaceConstants; import org.apache.camel.component.huggingface.HuggingFaceEndpoint; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Predictor for the TEXT_CLASSIFICATION task, performing sentiment or label classification on text. diff --git a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/TextToSpeechPredictor.java b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/TextToSpeechPredictor.java index bbf77456c0c03..97e961b228dd1 100644 --- a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/TextToSpeechPredictor.java +++ b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/TextToSpeechPredictor.java @@ -22,12 +22,12 @@ import ai.djl.modality.Input; import ai.djl.modality.Output; import ai.djl.modality.audio.Audio; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.huggingface.HuggingFaceConstants; import org.apache.camel.component.huggingface.HuggingFaceEndpoint; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Predictor for the TEXT_TO_SPEECH task, generating raw audio waveform from text input. diff --git a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/ZeroShotClassificationPredictor.java b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/ZeroShotClassificationPredictor.java index cf3dadadac29d..b51ea743dfa9b 100644 --- a/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/ZeroShotClassificationPredictor.java +++ b/components/camel-ai/camel-huggingface/src/main/java/org/apache/camel/component/huggingface/tasks/ZeroShotClassificationPredictor.java @@ -24,12 +24,12 @@ import ai.djl.modality.Classifications; import ai.djl.modality.Input; import ai.djl.modality.Output; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.huggingface.HuggingFaceConstants; import org.apache.camel.component.huggingface.HuggingFaceEndpoint; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Predictor for the ZERO_SHOT_CLASSIFICATION task, performing label classification on text without prior training. diff --git a/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentProducer.java b/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentProducer.java index afc1ff6e8a739..33944cb503c44 100644 --- a/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentProducer.java +++ b/components/camel-ai/camel-langchain4j-agent/src/main/java/org/apache/camel/component/langchain4j/agent/LangChain4jAgentProducer.java @@ -20,8 +20,6 @@ import java.util.*; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import dev.langchain4j.agent.tool.ToolSpecification; import dev.langchain4j.mcp.McpToolProvider; import dev.langchain4j.mcp.client.McpClient; @@ -41,6 +39,8 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class LangChain4jAgentProducer extends DefaultProducer { private static final Logger LOG = LoggerFactory.getLogger(LangChain4jAgentProducer.class); @@ -204,8 +204,11 @@ private ToolProvider createCamelToolProvider(Map String arguments = toolExecutionRequest.arguments(); if (arguments != null && !arguments.trim().isEmpty()) { JsonNode jsonNode = objectMapper.readValue(arguments, JsonNode.class); - jsonNode.fieldNames() - .forEachRemaining(name -> exchange.getMessage().setHeader(name, jsonNode.get(name))); + jsonNode.properties() + .forEach(propEntry -> { + String name = propEntry.getKey(); + exchange.getMessage().setHeader(name, jsonNode.get(name)); + }); } // Set the tool name as a header for route identification diff --git a/components/camel-ai/camel-langchain4j-chat/pom.xml b/components/camel-ai/camel-langchain4j-chat/pom.xml index 8e4c7f5bc45c0..d67647f03ffc9 100644 --- a/components/camel-ai/camel-langchain4j-chat/pom.xml +++ b/components/camel-ai/camel-langchain4j-chat/pom.xml @@ -58,9 +58,9 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson2-version} + ${jackson-version} diff --git a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatProducer.java b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatProducer.java index 3e3aefdd358e0..ef6b21a1db085 100644 --- a/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatProducer.java +++ b/components/camel-ai/camel-langchain4j-chat/src/main/java/org/apache/camel/component/langchain4j/chat/LangChain4jChatProducer.java @@ -19,7 +19,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import dev.langchain4j.data.message.AiMessage; import dev.langchain4j.data.message.ChatMessage; import dev.langchain4j.data.message.UserMessage; @@ -34,6 +33,7 @@ import org.apache.camel.NoSuchHeaderException; import org.apache.camel.support.DefaultProducer; import org.apache.camel.util.ObjectHelper; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.component.langchain4j.chat.LangChain4jChatHeaders.AUGMENTED_DATA; diff --git a/components/camel-ai/camel-langchain4j-tools/pom.xml b/components/camel-ai/camel-langchain4j-tools/pom.xml index 8928e6fc31f8b..f4b5ebceeb977 100644 --- a/components/camel-ai/camel-langchain4j-tools/pom.xml +++ b/components/camel-ai/camel-langchain4j-tools/pom.xml @@ -49,6 +49,11 @@ org.apache.camel camel-jackson + + tools.jackson.core + jackson-databind + + dev.langchain4j diff --git a/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java b/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java index 522609ee94241..ebcdca301d394 100644 --- a/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java +++ b/components/camel-ai/camel-langchain4j-tools/src/main/java/org/apache/camel/component/langchain4j/tools/LangChain4jToolsProducer.java @@ -21,13 +21,6 @@ import java.util.Map; import java.util.Set; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.BooleanNode; -import com.fasterxml.jackson.databind.node.DoubleNode; -import com.fasterxml.jackson.databind.node.IntNode; -import com.fasterxml.jackson.databind.node.LongNode; -import com.fasterxml.jackson.databind.node.TextNode; import dev.langchain4j.agent.tool.ToolExecutionRequest; import dev.langchain4j.agent.tool.ToolSpecification; import dev.langchain4j.data.message.AiMessage; @@ -49,6 +42,13 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.BooleanNode; +import tools.jackson.databind.node.DoubleNode; +import tools.jackson.databind.node.IntNode; +import tools.jackson.databind.node.LongNode; +import tools.jackson.databind.node.StringNode; public class LangChain4jToolsProducer extends DefaultProducer { private static final Logger LOG = LoggerFactory.getLogger(LangChain4jToolsProducer.class); @@ -175,29 +175,30 @@ private void invokeTools( // Map Json to Header JsonNode jsonNode = objectMapper.readValue(toolExecutionRequest.arguments(), JsonNode.class); - jsonNode.fieldNames() - .forEachRemaining(name -> { - final JsonNode value = jsonNode.get(name); - Object headerValue; - - // Try to get values for the known tool parameter types - if (value instanceof TextNode) { - headerValue = typeConverter.convertTo(String.class, value); - } else if (value instanceof IntNode) { - headerValue = typeConverter.convertTo(Integer.class, value); - } else if (value instanceof LongNode) { - headerValue = typeConverter.convertTo(Long.class, value); - } else if (value instanceof DoubleNode) { - headerValue = typeConverter.convertTo(Double.class, value); - } else if (value instanceof BooleanNode) { - headerValue = typeConverter.convertTo(Boolean.class, value); - } else { - // Fallback to JsonNode to enable the value to be extracted elsewhere - headerValue = value; - } - - exchange.getMessage().setHeader(name, headerValue); - }); + + jsonNode.propertyStream().forEach(entry -> { + String name = entry.getKey(); + final JsonNode value = entry.getValue(); + Object headerValue; + + // Try to get values for the known tool parameter types + if (value instanceof StringNode) { + headerValue = typeConverter.convertTo(String.class, value); + } else if (value instanceof IntNode) { + headerValue = typeConverter.convertTo(Integer.class, value); + } else if (value instanceof LongNode) { + headerValue = typeConverter.convertTo(Long.class, value); + } else if (value instanceof DoubleNode) { + headerValue = typeConverter.convertTo(Double.class, value); + } else if (value instanceof BooleanNode) { + headerValue = typeConverter.convertTo(Boolean.class, value); + } else { + // Fallback to JsonNode to enable the value to be extracted elsewhere + headerValue = value; + } + + exchange.getMessage().setHeader(name, headerValue); + }); // Execute the consumer route diff --git a/components/camel-ai/camel-neo4j/pom.xml b/components/camel-ai/camel-neo4j/pom.xml index 8fee9f775dffe..01b0283fa3420 100644 --- a/components/camel-ai/camel-neo4j/pom.xml +++ b/components/camel-ai/camel-neo4j/pom.xml @@ -49,6 +49,10 @@ org.apache.camel camel-jackson + + tools.jackson.core + jackson-databind + dev.langchain4j langchain4j-core diff --git a/components/camel-ai/camel-neo4j/src/main/java/org/apache/camel/component/neo4j/Neo4jProducer.java b/components/camel-ai/camel-neo4j/src/main/java/org/apache/camel/component/neo4j/Neo4jProducer.java index 351e750b33f5a..7868f52cc52d8 100644 --- a/components/camel-ai/camel-neo4j/src/main/java/org/apache/camel/component/neo4j/Neo4jProducer.java +++ b/components/camel-ai/camel-neo4j/src/main/java/org/apache/camel/component/neo4j/Neo4jProducer.java @@ -21,8 +21,6 @@ import java.util.UUID; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.InvalidPayloadException; import org.apache.camel.Message; @@ -36,6 +34,8 @@ import org.neo4j.driver.Record; import org.neo4j.driver.Values; import org.neo4j.driver.summary.ResultSummary; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.component.neo4j.Neo4Operation.RETRIEVE_NODES; import static org.apache.camel.component.neo4j.Neo4Operation.RETRIEVE_NODES_AND_UPDATE_WITH_CYPHER_QUERY; diff --git a/components/camel-ai/camel-openai/pom.xml b/components/camel-ai/camel-openai/pom.xml index 3d89c5d824f6b..1cf9e05d50c95 100644 --- a/components/camel-ai/camel-openai/pom.xml +++ b/components/camel-ai/camel-openai/pom.xml @@ -55,9 +55,13 @@ io.modelcontextprotocol.sdk - mcp-json-jackson2 + mcp-json-jackson3 ${mcp-java-sdk-version} + + tools.jackson.core + jackson-databind + diff --git a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java index 1ff143d51e13f..0e3459a86d393 100644 --- a/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java +++ b/components/camel-ai/camel-openai/src/main/java/org/apache/camel/component/openai/OpenAIProducer.java @@ -29,7 +29,6 @@ import java.util.Set; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.ObjectMapper; import com.openai.core.JsonValue; import com.openai.core.http.StreamResponse; import com.openai.models.ResponseFormatJsonSchema; @@ -60,6 +59,7 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; /** * OpenAI producer for chat completion. diff --git a/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc b/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc index 598590a6e8f8a..3d2e30dc2500e 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc +++ b/components/camel-aws/camel-aws-bedrock/src/main/docs/aws-bedrock-component.adoc @@ -925,12 +925,12 @@ and you can then send to the direct endpoint something like ObjectNode rootNode = mapper.createObjectNode(); ObjectNode textParameter = mapper.createObjectNode(); textParameter.putIfAbsent("text", - new TextNode("A Sci-fi camel running in the desert")); + new StringNode("A Sci-fi camel running in the desert")); rootNode.putIfAbsent("textToImageParams", textParameter); - rootNode.putIfAbsent("taskType", new TextNode("TEXT_IMAGE")); + rootNode.putIfAbsent("taskType", new StringNode("TEXT_IMAGE")); ObjectNode childNode = mapper.createObjectNode(); childNode.putIfAbsent("numberOfImages", new IntNode(3)); - childNode.putIfAbsent("quality", new TextNode("standard")); + childNode.putIfAbsent("quality", new StringNode("standard")); childNode.putIfAbsent("cfgScale", new IntNode(8)); childNode.putIfAbsent("height", new IntNode(512)); childNode.putIfAbsent("width", new IntNode(512)); @@ -964,7 +964,7 @@ and you can then send to the direct endpoint something like ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("inputText", - new TextNode("A Sci-fi camel running in the desert")); + new StringNode("A Sci-fi camel running in the desert")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java index cac050a892a07..e9605afe9281d 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/BedrockProducer.java @@ -19,9 +19,6 @@ import java.util.ArrayList; import java.util.List; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.InvalidPayloadException; @@ -45,6 +42,9 @@ import software.amazon.awssdk.services.bedrockruntime.model.InvokeModelWithResponseStreamRequest; import software.amazon.awssdk.services.bedrockruntime.model.SystemContentBlock; import software.amazon.awssdk.services.bedrockruntime.model.ToolConfiguration; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * A Producer which sends messages to the Amazon Bedrock Service AWS @@ -205,7 +205,7 @@ private void invokeImageModel(BedrockRuntimeClient bedrockRuntimeClient, Exchang Message message = getMessageForResponse(exchange); try { setBase64Image(result, message); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } } @@ -256,7 +256,7 @@ private void invokeEmbeddingsModel(BedrockRuntimeClient bedrockRuntimeClient, Ex } } - private static void setBase64Image(InvokeModelResponse result, Message message) throws JsonProcessingException { + private static void setBase64Image(InvokeModelResponse result, Message message) throws JacksonException { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonString = mapper.readTree(result.body().asUtf8String()); message.setBody(jsonString.get("images")); @@ -280,7 +280,7 @@ protected void setResponseText(InvokeModelResponse result, Message message) { case "ai21.jamba-1-5-mini-v1:0": try { setAi21Text(result, message); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } break; @@ -291,7 +291,7 @@ protected void setResponseText(InvokeModelResponse result, Message message) { case "anthropic.claude-v2:1": try { setAnthropicText(result, message); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } break; @@ -308,7 +308,7 @@ protected void setResponseText(InvokeModelResponse result, Message message) { case "anthropic.claude-sonnet-4-20250514-v1:0": try { setAnthropicV3Text(result, message); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } break; @@ -322,7 +322,7 @@ protected void setResponseText(InvokeModelResponse result, Message message) { case "mistral.pixtral-large-2502-v1:0": try { setMistralText(result, message); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } break; @@ -334,7 +334,7 @@ protected void setResponseText(InvokeModelResponse result, Message message) { case "amazon.nova-pro-v1:0": try { setAnthropicV3Text(result, message); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } break; @@ -344,7 +344,7 @@ protected void setResponseText(InvokeModelResponse result, Message message) { case "cohere.command-r-v1:0": try { setCohereText(result, message); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } break; @@ -364,7 +364,7 @@ protected void setResponseText(InvokeModelResponse result, Message message) { case "meta.llama4-scout-17b-instruct-v1:0": try { setLlamaText(result, message); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } break; @@ -378,37 +378,37 @@ private void setTitanText(InvokeModelResponse result, Message message) { message.setBody(result.body().asUtf8String()); } - private void setAi21Text(InvokeModelResponse result, Message message) throws JsonProcessingException { + private void setAi21Text(InvokeModelResponse result, Message message) throws JacksonException { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonString = mapper.readTree(result.body().asUtf8String()); message.setBody(jsonString.get("completions")); } - private void setAnthropicText(InvokeModelResponse result, Message message) throws JsonProcessingException { + private void setAnthropicText(InvokeModelResponse result, Message message) throws JacksonException { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonString = mapper.readTree(result.body().asUtf8String()); message.setBody(jsonString.get("completion")); } - private void setAnthropicV3Text(InvokeModelResponse result, Message message) throws JsonProcessingException { + private void setAnthropicV3Text(InvokeModelResponse result, Message message) throws JacksonException { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonString = mapper.readTree(result.body().asUtf8String()); message.setBody(jsonString); } - private void setMistralText(InvokeModelResponse result, Message message) throws JsonProcessingException { + private void setMistralText(InvokeModelResponse result, Message message) throws JacksonException { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonString = mapper.readTree(result.body().asUtf8String()); message.setBody(jsonString); } - private void setCohereText(InvokeModelResponse result, Message message) throws JsonProcessingException { + private void setCohereText(InvokeModelResponse result, Message message) throws JacksonException { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonString = mapper.readTree(result.body().asUtf8String()); message.setBody(jsonString.get("text")); } - private void setLlamaText(InvokeModelResponse result, Message message) throws JsonProcessingException { + private void setLlamaText(InvokeModelResponse result, Message message) throws JacksonException { ObjectMapper mapper = new ObjectMapper(); JsonNode jsonString = mapper.readTree(result.body().asUtf8String()); message.setBody(jsonString.get("generation")); diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/BedrockStreamHandler.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/BedrockStreamHandler.java index cf0feaafdbd51..ced61c4fd6304 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/BedrockStreamHandler.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/BedrockStreamHandler.java @@ -19,11 +19,10 @@ import java.util.List; import java.util.function.Consumer; -import com.fasterxml.jackson.core.JsonProcessingException; -import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.services.bedrockruntime.model.InvokeModelWithResponseStreamResponseHandler; +import tools.jackson.core.JacksonException; /** * Utility class for handling streaming responses from Bedrock models @@ -75,7 +74,7 @@ public static InvokeModelWithResponseStreamResponseHandler createCompleteHandler } } chunkCount[0]++; - } catch (JsonProcessingException e) { + } catch (JacksonException e) { LOG.warn("Error parsing streaming chunk: {}", e.getMessage(), e); } }) @@ -132,7 +131,7 @@ public static InvokeModelWithResponseStreamResponseHandler createChunksHandler( } } chunkCount[0]++; - } catch (JsonProcessingException e) { + } catch (JacksonException e) { LOG.warn("Error parsing streaming chunk: {}", e.getMessage(), e); } }) diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/ClaudeStreamParser.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/ClaudeStreamParser.java index e36b7ce75bd4b..1c7dd3c5a82fa 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/ClaudeStreamParser.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/ClaudeStreamParser.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.aws2.bedrock.runtime.stream; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Parser for Anthropic Claude model streaming responses (v3+ format) @@ -35,7 +35,7 @@ public class ClaudeStreamParser implements StreamResponseParser { private static final ObjectMapper MAPPER = new ObjectMapper(); @Override - public String extractText(String chunk) throws JsonProcessingException { + public String extractText(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return ""; } @@ -56,7 +56,7 @@ public String extractText(String chunk) throws JsonProcessingException { } @Override - public String extractCompletionReason(String chunk) throws JsonProcessingException { + public String extractCompletionReason(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -74,7 +74,7 @@ public String extractCompletionReason(String chunk) throws JsonProcessingExcepti } @Override - public Integer extractTokenCount(String chunk) throws JsonProcessingException { + public Integer extractTokenCount(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -92,7 +92,7 @@ public Integer extractTokenCount(String chunk) throws JsonProcessingException { } @Override - public boolean isFinalChunk(String chunk) throws JsonProcessingException { + public boolean isFinalChunk(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return false; } diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/CohereStreamParser.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/CohereStreamParser.java index 12aa228d8955e..afdeb0d66ec8b 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/CohereStreamParser.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/CohereStreamParser.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.aws2.bedrock.runtime.stream; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Parser for Cohere model streaming responses @@ -33,7 +33,7 @@ public class CohereStreamParser implements StreamResponseParser { private static final ObjectMapper MAPPER = new ObjectMapper(); @Override - public String extractText(String chunk) throws JsonProcessingException { + public String extractText(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return ""; } @@ -48,7 +48,7 @@ public String extractText(String chunk) throws JsonProcessingException { } @Override - public String extractCompletionReason(String chunk) throws JsonProcessingException { + public String extractCompletionReason(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -58,7 +58,7 @@ public String extractCompletionReason(String chunk) throws JsonProcessingExcepti } @Override - public Integer extractTokenCount(String chunk) throws JsonProcessingException { + public Integer extractTokenCount(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -78,7 +78,7 @@ public Integer extractTokenCount(String chunk) throws JsonProcessingException { } @Override - public boolean isFinalChunk(String chunk) throws JsonProcessingException { + public boolean isFinalChunk(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return false; } diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/LlamaStreamParser.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/LlamaStreamParser.java index 243a09e1dd2d9..fb1773c1396c9 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/LlamaStreamParser.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/LlamaStreamParser.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.aws2.bedrock.runtime.stream; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Parser for Meta Llama model streaming responses @@ -34,7 +34,7 @@ public class LlamaStreamParser implements StreamResponseParser { private static final ObjectMapper MAPPER = new ObjectMapper(); @Override - public String extractText(String chunk) throws JsonProcessingException { + public String extractText(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return ""; } @@ -44,7 +44,7 @@ public String extractText(String chunk) throws JsonProcessingException { } @Override - public String extractCompletionReason(String chunk) throws JsonProcessingException { + public String extractCompletionReason(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -54,7 +54,7 @@ public String extractCompletionReason(String chunk) throws JsonProcessingExcepti } @Override - public Integer extractTokenCount(String chunk) throws JsonProcessingException { + public Integer extractTokenCount(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -64,7 +64,7 @@ public Integer extractTokenCount(String chunk) throws JsonProcessingException { } @Override - public boolean isFinalChunk(String chunk) throws JsonProcessingException { + public boolean isFinalChunk(String chunk) throws JacksonException { String stopReason = extractCompletionReason(chunk); return ObjectHelper.isNotEmpty(stopReason); } diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/MistralStreamParser.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/MistralStreamParser.java index b2ce79f9c0c87..38f7134f20358 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/MistralStreamParser.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/MistralStreamParser.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.aws2.bedrock.runtime.stream; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Parser for Mistral AI model streaming responses @@ -32,7 +32,7 @@ public class MistralStreamParser implements StreamResponseParser { private static final ObjectMapper MAPPER = new ObjectMapper(); @Override - public String extractText(String chunk) throws JsonProcessingException { + public String extractText(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return ""; } @@ -47,7 +47,7 @@ public String extractText(String chunk) throws JsonProcessingException { } @Override - public String extractCompletionReason(String chunk) throws JsonProcessingException { + public String extractCompletionReason(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -62,14 +62,14 @@ public String extractCompletionReason(String chunk) throws JsonProcessingExcepti } @Override - public Integer extractTokenCount(String chunk) throws JsonProcessingException { + public Integer extractTokenCount(String chunk) throws JacksonException { // Mistral doesn't provide token count in streaming responses // Could be added if Mistral adds this feature return null; } @Override - public boolean isFinalChunk(String chunk) throws JsonProcessingException { + public boolean isFinalChunk(String chunk) throws JacksonException { String stopReason = extractCompletionReason(chunk); return ObjectHelper.isNotEmpty(stopReason); } diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/StreamResponseParser.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/StreamResponseParser.java index cfc31e2f92dcd..4380cb23e5168 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/StreamResponseParser.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/StreamResponseParser.java @@ -16,7 +16,7 @@ */ package org.apache.camel.component.aws2.bedrock.runtime.stream; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; /** * Parser interface for extracting text and metadata from streaming responses of different Bedrock models @@ -29,7 +29,7 @@ public interface StreamResponseParser { * @param chunk the JSON chunk from the stream * @return the extracted text content, or empty string if no text in this chunk */ - String extractText(String chunk) throws JsonProcessingException; + String extractText(String chunk) throws JacksonException; /** * Extract the completion reason from a streaming chunk (if present) @@ -37,7 +37,7 @@ public interface StreamResponseParser { * @param chunk the JSON chunk from the stream * @return the completion reason, or null if not present in this chunk */ - String extractCompletionReason(String chunk) throws JsonProcessingException; + String extractCompletionReason(String chunk) throws JacksonException; /** * Extract the token count from a streaming chunk (if present) @@ -45,7 +45,7 @@ public interface StreamResponseParser { * @param chunk the JSON chunk from the stream * @return the token count, or null if not present in this chunk */ - Integer extractTokenCount(String chunk) throws JsonProcessingException; + Integer extractTokenCount(String chunk) throws JacksonException; /** * Check if this chunk represents the end of the stream @@ -53,5 +53,5 @@ public interface StreamResponseParser { * @param chunk the JSON chunk from the stream * @return true if this is the final chunk */ - boolean isFinalChunk(String chunk) throws JsonProcessingException; + boolean isFinalChunk(String chunk) throws JacksonException; } diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/TitanStreamParser.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/TitanStreamParser.java index 5d472fc650a9e..e544b782f46aa 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/TitanStreamParser.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/TitanStreamParser.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.aws2.bedrock.runtime.stream; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Parser for Amazon Titan model streaming responses @@ -34,7 +34,7 @@ public class TitanStreamParser implements StreamResponseParser { private static final ObjectMapper MAPPER = new ObjectMapper(); @Override - public String extractText(String chunk) throws JsonProcessingException { + public String extractText(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return ""; } @@ -44,7 +44,7 @@ public String extractText(String chunk) throws JsonProcessingException { } @Override - public String extractCompletionReason(String chunk) throws JsonProcessingException { + public String extractCompletionReason(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -54,7 +54,7 @@ public String extractCompletionReason(String chunk) throws JsonProcessingExcepti } @Override - public Integer extractTokenCount(String chunk) throws JsonProcessingException { + public Integer extractTokenCount(String chunk) throws JacksonException { if (chunk == null || chunk.trim().isEmpty()) { return null; } @@ -64,7 +64,7 @@ public Integer extractTokenCount(String chunk) throws JsonProcessingException { } @Override - public boolean isFinalChunk(String chunk) throws JsonProcessingException { + public boolean isFinalChunk(String chunk) throws JacksonException { String completionReason = extractCompletionReason(chunk); return ObjectHelper.isNotEmpty(completionReason); } diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/integration/BedrockProducerIT.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/integration/BedrockProducerIT.java index a6e33f8f4308a..1ff7d5754468b 100644 --- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/integration/BedrockProducerIT.java +++ b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/integration/BedrockProducerIT.java @@ -16,8 +16,6 @@ */ package org.apache.camel.component.aws2.bedrock.runtime.integration; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.*; import org.apache.camel.EndpointInject; import org.apache.camel.Exchange; import org.apache.camel.ProducerTemplate; @@ -31,6 +29,8 @@ import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.condition.EnabledIfSystemProperties; import org.junit.jupiter.api.condition.EnabledIfSystemProperty; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.*; // Must be manually tested. Provide your own accessKey and secretKey using -Daws.manual.access.key and -Daws.manual.secret.key @EnabledIfSystemProperties({ @@ -59,7 +59,7 @@ public void testInvokeTitanExpressModel() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("inputText", - new TextNode( + new StringNode( "User: Generate synthetic data for daily product sales in various categories - include row number, product name, category, date of sale and price. Produce output in JSON format. Count records and ensure there are no more than 5.")); ArrayNode stopSequences = mapper.createArrayNode(); @@ -87,7 +87,7 @@ public void testInvokeTitanLiteModel() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("inputText", - new TextNode( + new StringNode( "User: Generate synthetic data for daily product sales in various categories - include row number, product name, category, date of sale and price. Produce output in JSON format. Count records and ensure there are no more than 5.")); ArrayNode stopSequences = mapper.createArrayNode(); @@ -116,12 +116,12 @@ public void testInvokeTitanImageModel() throws InterruptedException { ObjectNode rootNode = mapper.createObjectNode(); ObjectNode textParameter = mapper.createObjectNode(); textParameter.putIfAbsent("text", - new TextNode("A Sci-fi camel running in the desert")); + new StringNode("A Sci-fi camel running in the desert")); rootNode.putIfAbsent("textToImageParams", textParameter); - rootNode.putIfAbsent("taskType", new TextNode("TEXT_IMAGE")); + rootNode.putIfAbsent("taskType", new StringNode("TEXT_IMAGE")); ObjectNode childNode = mapper.createObjectNode(); childNode.putIfAbsent("numberOfImages", new IntNode(3)); - childNode.putIfAbsent("quality", new TextNode("standard")); + childNode.putIfAbsent("quality", new StringNode("standard")); childNode.putIfAbsent("cfgScale", new IntNode(8)); childNode.putIfAbsent("height", new IntNode(512)); childNode.putIfAbsent("width", new IntNode(512)); @@ -145,7 +145,7 @@ public void testInvokeTitanEmbeddingsModel() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("inputText", - new TextNode("A Sci-fi camel running in the desert")); + new StringNode("A Sci-fi camel running in the desert")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -163,7 +163,7 @@ public void testInvokeJurassic2MidModel() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode( + new StringNode( "\"Apple Inc. (NASDAQ:AAPL) Q3 2023 Earnings Conference Call August 3, 2023 5:00 PM ET Operator\\\\nGood day, and welcome to the Apple Q3 Fiscal Year 2023 Earnings Conference Call. Today's call is being recorded. At this time, for opening remarks and introductions, I would like to turn the call over to Saori Casey, Vice President of Finance. Please go ahead.\\\\nSaori Casey\\\\nThank you. Good afternoon, and thank you for joining us. Speaking first today is Apple's CEO, Tim Cook; and he'll be followed by CFO, Luca Maestri. After that, we'll open the call to questions from analysts.\\\\nPlease note that some of the information you'll hear during our discussion today will consist of forward-looking statements, including, without limitation, those regarding revenue, gross margin, operating expenses, other income and expense, taxes, capital allocation and future business outlook, including the potential impact of macroeconomic conditions on the company's business and the results of operations.\\\\nThese statements involve risks and uncertainties that may cause actual results or trends to differ materially from our forecast. For more information, please refer to the risk factors discussed in Apple's most recently filed annual report on Form 10-K and the Form 8-K filed with the SEC today, along with the associated press release. Apple assumes no obligation to update any forward-looking statements, which speak only as of the date they are made.\\\\nI'd now like to turn the call over to Tim for introductory remarks.\\\\nTim Cook\\\\nThank you, Saori. Good afternoon, everyone, and thanks for joining us. Today, Apple is reporting revenue of $81.8 billion for the June quarter, better than our expectations. We continued to see strong results in emerging markets, driven by robust sales of iPhone with June quarter total revenue records in India, Indonesia, Mexico, the Philippines, Poland, Saudi Arabia, Turkey and the UAE. We set June quarter records in a number of other countries as well, including France, the Netherlands and Austria. And we set an all-time revenue record in Services driven by more than $1 billion paid subscriptions.\\\\nWe continued to face an uneven macroeconomic environment, including nearly 4 percentage points of foreign exchange headwinds. On a constant currency basis, we grew compared to the prior year's quarter in aggregate and in the majority of markets we track. We continue to manage deliberately and innovate relentlessly, and we are driven by the sense of possibility those efforts inspire.\\\\nTo that end, before I turn to the quarter in more detail, I want to take a moment to acknowledge the unprecedented innovations we were proud to announce at our Worldwide Developers Conference. In addition to extraordinary new Macs and incredible updates to our software platforms, we had the chance to introduce the world to spatial computing.\\\\nWe were so pleased to share the revolutionary Apple Vision Pro with the world, a bold new product unlike anything else created before. Apple Vision Pro is a marvel of engineering, built on decades of innovation only possible at Apple. It is the most advanced personal electronic device ever created, and we've been thrilled by the reaction from press, analysts, developers and content creators who've had the chance to try it. We can't wait to get it into customers' hands early next year.\\\\nNow let me share more with you on our June quarter results beginning with iPhone. iPhone revenue came in at $39.7 billion for the quarter, down 2% from the year ago quarter's record performance. On a constant currency basis, iPhone revenue grew, and we had a June quarter record for switchers, reflecting the popularity of the iPhone lineup. iPhone 14 customers continue to praise the exceptional battery life and essential health and safety features, while iPhone 14 Plus users are loving the new larger screen size. And with Dynamic Island, Always-On display and the most powerful camera system ever in an iPhone, the iPhone 14 Pro lineup is our best ever.\\\\nTurning to Mac. We recorded $6.8 billion in revenue, down 7% year-over-year. We are proud to have completed the transition of our entire Mac lineup to run exclusively on Apple silicon. We are also excited to have introduced the new 15-inch MacBook Air during the quarter, the world's best 15-inch laptop and one of the best Macs we've ever made. And we launched 2 new powerhouses in computing, Mac Studio with M2 Max and M2 Ultra and Mac Pro with M2 Ultra, which are the most powerful Macs we've ever made.\\\\niPad revenue was $5.8 billion for the June quarter, down 20% year-over-year, in part due to a difficult compare because of the timing of the iPad Air launch last year. Customers are loving iPad's versatility and exceptional value. There was a great deal of excitement from creatives when we brought Final Cut Pro and Logic Pro to iPad this spring. And with the back-to-school season in full swing, iPad has the power to help students tackle the toughest assignments.\\\\nAcross Wearables, Home and Accessories, revenue was $8.3 billion, up 2% year-over-year and in line with our expectations. Packed with features to empower users to live a healthier life, Apple Watch and Apple Watch Ultra continue to help people take the next step on their wellness journey.\\\\nAs I mentioned earlier, last quarter, we held our biggest and most exciting WWDC yet. We were thrilled to welcome developers from across the globe to Apple Park, both in person and virtually, and to share some stunning new announcements with the world.\\\\nIn addition to Apple Vision Pro and the new Macs that we introduced, we had the chance to reveal some truly remarkable new innovations to our software platforms. From exciting new features like Live Voicemail and StandBy in iOS 17, to new tools for users to work, play and personalize their experience in macOS Sonoma and iPadOS 17, to a fresh design and new workout capabilities in watchOS 10, there's so much coming later this year to empower users to get more out of their devices, and we think they're going to instantly love these new features.\\\\nIt was also an exciting quarter for Services where revenue reached $21.2 billion and saw a sequential acceleration to an 8% year-over-year increase, better than we expected. We set an all-time revenue record for total services and in a number of categories, including video, AppleCare, cloud and payment services. Since we introduced Apple Pay almost a decade ago, customers have been loving how easy it is to make purchases online, in apps and in stores. We're also pleased to see Apple Card build on the success of Apple Pay. Designed with our users' financial health in mind, Apple Card has become one of the most successful credit card programs in the U.S. with award-winning customer satisfaction. And this spring, we introduced a new high-yield savings account for Apple Card customers, which has become incredibly popular, with customers already making more than $10 billion in deposits.\\\\nMeanwhile, Apple TV+ continues to provide a spectacular showcase of imaginative storytelling. Recently, fans welcomed new series like Hijack and Silo as well as returning fan favorites like Foundation and The Afterparty. In the few years since its launch, Apple TV+ has earned more than 1,500 nominations and 370 wins. That includes the 54 Emmy Award nominations across 13 titles that Apple TV+ received last month.\\\\nIt's also been an exciting time for sports on Apple TV+. Soccer legend Lionel Messi made his debut with Major League Soccer last month, and fans all over the world tuned in with MLS Season Pass. We are excited about our MLS partnership, and we're thrilled to see Messi suiting up with Inter Miami.\\\\nAnd just in time for summer concert season, Apple Music launched new discovery features celebrating live music, including venue guides in Apple Maps and set lists from tours of major artists. These new features and others join a lineup of updates coming later this year to make Services more powerful, more useful and more fun than ever.\\\\nEverything we do is in service of our customers, and retail is where we bring the best of Apple. During the quarter, we opened the Apple Store online in Vietnam, and we're excited to connect with more customers there. We also redesigned our first-ever Apple Store located in Tysons Corner, Northern Virginia, with inclusive, innovative and sustainable design enhancements. We opened a beautiful new store beneath our new London headquarters in the historic Battersea Power Station. And the performance of the stores we opened in India this spring exceeded our initial expectations.\\\\nWith every product we create, every feature we develop and every interaction we share with our customers, we lead with the values we stand for. We believe in creating technology that serves all of humanity, which is why accessibility has always been a core value that we embed in everything we do.\\\\nOn Global Accessibility Awareness Day, we unveiled some extraordinary new tools for cognitive, vision, hearing and mobile accessibility that will be available later this year, including Assistive Access, which distills apps to their most essential features, and Personal Voice, which allows users to create a synthesized voice that sounds just like them.\\\\nBuilding technology and service of our customers also means protecting their privacy, which we believe is a fundamental human right. That's why we were pleased to announce major updates to Safari Private Browsing, Communication Safety and Lockdown Mode to further safeguard our users. And as part of our efforts to build a better world, we announced that we've more than doubled our initial commitment to our Racial Equity and Justice Initiative to more than $200 million. We will continue to do our part to support education, economic empowerment and criminal justice reform work. And while supporting efforts to advance equity and opportunity, we continue to build a culture of belonging at Apple and a workforce that reflects the communities we serve.\\\\nThrough our environmental work, we're making strides in our commitment to leave the world better than we found it. Last month, Apple joined with global nonprofit Acumen in a new effort to improve livelihoods in India through clean energy innovation, and we are as committed as ever to our Apple 2030 goal to be carbon neutral across our entire supply chain and the life cycle of our products.\\\\nWe've long held that education is the great equalizer. With that in mind, we're expanding Apple Learning Coach, a free professional learning program that teaches educators how to get more out of Apple technology in the classroom. Today, we welcome more than 1,900 educators across the U.S. to the program. By the end of the year, we'll offer Apple Learning Coach in 12 more countries.\\\\nAs we're connecting with teachers, we're also celebrating the graduations of students at our app developer academies around the world. From Detroit, to Naples, to Riyadh and more, we're excited to watch these talented developers embark on careers in coding and find ways to make a positive difference in their communities.\\\\nApple remains a champion of innovation, a company fueled by boundless creativity, driven by a deep sense of mission and guided by the unshakable belief that a great idea can change the world. Looking ahead, we'll continue to manage for the long term, always pushing the limits of what's possible and always putting the customer at the center of everything we do.\\\\nWith that, I'll turn it over to Luca.\\\\nLuca Maestri\\\\nThank you, Tim, and good afternoon, everyone. Revenue for the June quarter was $81.8 billion, down 1% from last year and better than our expectations despite nearly 4 percentage points of negative impact from foreign exchange. On a constant currency basis, our revenue grew year-over-year in total and in the majority of the markets we track. We set June quarter records in both Europe and Greater China and continue to see strong performance across our emerging markets driven by iPhone.\\\\nProducts revenue was $60.6 billion, down 4% from last year, as we faced FX headwinds and an uneven macroeconomic environment. However, our installed base reached an all-time high across all geographic segments, driven by a June quarter record for iPhone switchers and high new-to rates in Mac, iPad and Watch, coupled with very high levels of customer satisfaction and loyalty.\\\\nOur Services revenue set an all-time record of $21.2 billion, up 8% year-over-year and grew double digits in constant currency. Our performance was strong around the world as we reach all-time Services revenue records in Americas and Europe and June quarter records in Greater China and rest of Asia Pacific.\\\\nCompany gross margin was 44.5%, a record level for the June quarter and up 20 basis points sequentially, driven by cost savings and favorable mix shift towards Services, partially offset by a seasonal loss of leverage. Products gross margin was 35.4%, down 130 basis points from last quarter due to seasonal loss of leverage and mix, partially offset by favorable costs. Services gross margin was 70.5%, decreasing 50 basis points sequentially.\\\\nOperating expenses of $13.4 billion were below the low end of the guidance range we provided at the beginning of the quarter and decelerated from the March quarter. We continue to take a deliberate approach in managing our spend with strong focus on innovation and new product development. The results of these actions delivered net income of $19.9 billion, diluted earnings per share of $1.26, up 5% versus last year, and very strong operating cash flow of $26.4 billion.\\\\nLet me now provide more detail for each of our revenue categories. iPhone revenue was $39.7 billion, down 2% year-over-year but grew on a constant currency basis. We set revenue records in several markets around the world, including an all-time record in India and June quarter records in Latin America, the Middle East and Africa, Indonesia, the Philippines, Italy, the Netherlands and the U.K. Our iPhone active installed base grew to a new all-time high, thanks to a June quarter record in switchers. This is a testament to our extremely high levels of customer satisfaction, which 451 Research recently measured at 98% for the iPhone 14 family in the U.S.\\\\nMac generated $6.8 billion in revenue, down 7% year-over-year. We continue to invest in our Mac portfolio. And this past quarter, we were pleased to complete the transition to Apple silicon for the entire lineup. This transition has driven both strong upgrade activity and a high number of new customers. In fact, almost half of Mac buyers during the quarter were new to the product. We also saw reported customer satisfaction of 96% for Mac in the U.S.\\\\niPad revenue was $5.8 billion, down 20% year-over-year and in line with our expectations. These results were driven by a difficult compare against the full quarter impact of the iPad Air launch in the prior year. At the same time, we continue to attract a large number of new customers to the iPad installed base with over half of the customers who purchased iPads during the quarter being new to the product. And the latest reports from 451 Research indicate customer satisfaction of 96% in the U.S.\\\\nWearables, Home and Accessories revenue was $8.3 billion, up 2% year-over-year, with a June quarter record in Greater China and strong performance in several emerging markets. We continue to see Apple Watch expand its reach with about 2/3 of customers purchasing an Apple Watch during the quarter being new to the product. And this is combined with very high levels of customer satisfaction, which was recently reported at 98% in the United States.\\\\nMoving on to Services. We reached a new all-time revenue record of $21.2 billion with year-over-year growth accelerating sequentially to 8% and up double digits in constant currency. In addition to the all-time records Tim mentioned earlier, we also set June quarter records for advertising, App Store and Music. We are very pleased with our performance in Services, which is a direct reflection of our ecosystem's strength.\\\\nFirst, our installed base of over 2 billion active devices continues to grow at a nice pace and establishes a solid foundation for the future expansion of our ecosystem. Second, we see increased customer engagement with our services. Both our transacting accounts and paid accounts grew double digits year-over-year, each reaching a new all-time high. Third, our paid subscriptions showed strong growth. This past quarter, we reached an important milestone and passed 1 billion paid subscriptions across the services on our platform, up 150 million during the last 12 months and nearly double the number of paid subscriptions we had only 3 years ago. And finally, we continue to improve the breadth and the quality of our current services. From 20 new games on Apple Arcade, to brand-new content on Apple TV+, to the launch of our high-yield savings account with Apple Card, our customers are loving these enhanced offerings.\\\\nTurning to the enterprise market. Our customers are leveraging Apple products every day to help improve productivity and attract talent. Blackstone, a global investment management firm, is expanding its Apple footprint from their corporate iPhone fleet to now offering the MacBook Air powered by M2 to all of their corporate employees and portfolio companies. Gilead, a leading biopharmaceutical company, has deployed thousands of iPads globally to their sales team. Over the last 6 months, they have also doubled their Mac user base by making MacBook Air available to more employees with a focus on user experience and strong security.\\\\nLet me now turn to our cash position and capital return program. We ended the quarter with over $166 billion in cash and marketable securities. We repaid $7.5 billion in maturing debt while issuing $5.2 billion of new debt and increasing commercial paper by $2 billion, leaving us with total debt of $109 billion. As a result, net cash was $57 billion at the end of the quarter.\\\\nDuring the quarter, we returned over $24 billion to shareholders, including $3.8 billion in dividends and equivalents and $18 billion through open market repurchases of 103 million Apple shares. We continue to believe there is great value in our stock and maintain our target of reaching a net cash neutral position over time.\\\\nAs we move ahead into the September quarter, I'd like to review our outlook, which includes the types of forward-looking information that Saori referred to at the beginning of the call. We expect our September quarter year-over-year revenue performance to be similar to the June quarter, assuming that the macroeconomic outlook doesn't worsen from what we are projecting today for the current quarter. Foreign exchange will continue to be a headwind, and we expect a negative year-over-year revenue impact of over 2 percentage points.\\\\nWe expect iPhone and Services year-over-year performance to accelerate from the June quarter. Also, we expect the revenue for both Mac and iPad to decline by double digits year-over-year due to difficult compares, particularly on the Mac. For both products, we experienced supply disruptions from factory shutdowns in the June quarter a year ago and were able to fulfill significant pent-up demand in the year ago September quarter.\\\\nWe expect gross margin to be between 44% and 45%. We expect OpEx to be between $13.5 billion and $13.7 billion. We expect OI&E to be around negative $250 million, excluding any potential impact from the mark-to-market of minority investments, and our tax rate to be around 16%.\\\\nFinally, today, our Board of Directors has declared a cash dividend of $0.24 per share of common stock payable on August 17, 2023, to shareholders of record as of August 14, 2023. With that, let's open the call to questions.\\\\n###\\\\nSummarize the above conversation.\\\"")); rootNode.putIfAbsent("maxTokens", new IntNode(500)); @@ -197,7 +197,7 @@ public void testInvokeAnthropicV1Model() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode("Human: Can you tell the history of Mayflower? \\n\\Assistant:")); + new StringNode("Human: Can you tell the history of Mayflower? \\n\\Assistant:")); ArrayNode stopSequences = mapper.createArrayNode(); stopSequences.add("Human:"); @@ -206,7 +206,7 @@ public void testInvokeAnthropicV1Model() throws InterruptedException { rootNode.putIfAbsent("temperature", new DoubleNode(0.5)); rootNode.putIfAbsent("top_p", new IntNode(1)); rootNode.putIfAbsent("top_k", new IntNode(250)); - rootNode.putIfAbsent("anthropic_version", new TextNode("bedrock-2023-05-31")); + rootNode.putIfAbsent("anthropic_version", new StringNode("bedrock-2023-05-31")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -224,7 +224,7 @@ public void testInvokeAnthropicV2Model() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode("Human: Can you tell the history of Mayflower? \\n\\Assistant:")); + new StringNode("Human: Can you tell the history of Mayflower? \\n\\Assistant:")); ArrayNode stopSequences = mapper.createArrayNode(); stopSequences.add("Human:"); @@ -233,7 +233,7 @@ public void testInvokeAnthropicV2Model() throws InterruptedException { rootNode.putIfAbsent("temperature", new DoubleNode(0.5)); rootNode.putIfAbsent("top_p", new IntNode(1)); rootNode.putIfAbsent("top_k", new IntNode(250)); - rootNode.putIfAbsent("anthropic_version", new TextNode("bedrock-2023-05-31")); + rootNode.putIfAbsent("anthropic_version", new StringNode("bedrock-2023-05-31")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -251,7 +251,7 @@ public void testInvokeAnthropicV21Model() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode("Human: Can you tell the history of Mayflower? \\n\\Assistant:")); + new StringNode("Human: Can you tell the history of Mayflower? \\n\\Assistant:")); ArrayNode stopSequences = mapper.createArrayNode(); stopSequences.add("Human:"); @@ -260,7 +260,7 @@ public void testInvokeAnthropicV21Model() throws InterruptedException { rootNode.putIfAbsent("temperature", new DoubleNode(0.5)); rootNode.putIfAbsent("top_p", new IntNode(1)); rootNode.putIfAbsent("top_k", new IntNode(250)); - rootNode.putIfAbsent("anthropic_version", new TextNode("bedrock-2023-05-31")); + rootNode.putIfAbsent("anthropic_version", new StringNode("bedrock-2023-05-31")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -281,14 +281,14 @@ public void testInvokeAnthropicV3Model() throws InterruptedException { ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); + element.putIfAbsent("role", new StringNode("user")); ArrayNode content = mapper.createArrayNode(); ObjectNode textContent = mapper.createObjectNode(); - textContent.putIfAbsent("type", new TextNode("text")); - textContent.putIfAbsent("text", new TextNode("Can you tell the history of Mayflower?")); + textContent.putIfAbsent("type", new StringNode("text")); + textContent.putIfAbsent("text", new StringNode("Can you tell the history of Mayflower?")); content.add(textContent); @@ -298,7 +298,7 @@ public void testInvokeAnthropicV3Model() throws InterruptedException { rootNode.putIfAbsent("messages", messages); rootNode.putIfAbsent("max_tokens", new IntNode(1000)); - rootNode.putIfAbsent("anthropic_version", new TextNode("bedrock-2023-05-31")); + rootNode.putIfAbsent("anthropic_version", new StringNode("bedrock-2023-05-31")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -319,14 +319,14 @@ public void testInvokeAnthropicV3HaikuModel() throws InterruptedException { ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); + element.putIfAbsent("role", new StringNode("user")); ArrayNode content = mapper.createArrayNode(); ObjectNode textContent = mapper.createObjectNode(); - textContent.putIfAbsent("type", new TextNode("text")); - textContent.putIfAbsent("text", new TextNode("Can you tell the history of Mayflower?")); + textContent.putIfAbsent("type", new StringNode("text")); + textContent.putIfAbsent("text", new StringNode("Can you tell the history of Mayflower?")); content.add(textContent); @@ -336,7 +336,7 @@ public void testInvokeAnthropicV3HaikuModel() throws InterruptedException { rootNode.putIfAbsent("messages", messages); rootNode.putIfAbsent("max_tokens", new IntNode(1000)); - rootNode.putIfAbsent("anthropic_version", new TextNode("bedrock-2023-05-31")); + rootNode.putIfAbsent("anthropic_version", new StringNode("bedrock-2023-05-31")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -354,7 +354,7 @@ public void testInvokeMistral7BInstructModel() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); + new StringNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); rootNode.putIfAbsent("max_tokens", new IntNode(300)); rootNode.putIfAbsent("temperature", new DoubleNode(0.5)); @@ -377,7 +377,7 @@ public void testInvokeMistral8x7BInstructModel() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); + new StringNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); rootNode.putIfAbsent("max_tokens", new IntNode(300)); rootNode.putIfAbsent("temperature", new DoubleNode(0.5)); @@ -400,7 +400,7 @@ public void testInvokeMistralLargeModel() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); + new StringNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); rootNode.putIfAbsent("max_tokens", new IntNode(200)); rootNode.putIfAbsent("temperature", new DoubleNode(0.5)); @@ -423,7 +423,7 @@ public void testInvokeTitanMultimodalEmbeddingsModel() throws InterruptedExcepti ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("inputText", - new TextNode("A Sci-fi camel running in the desert")); + new StringNode("A Sci-fi camel running in the desert")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -441,7 +441,7 @@ public void testInvokeTitanTextEmbeddingsV2Model() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("inputText", - new TextNode("A Sci-fi camel running in the desert")); + new StringNode("A Sci-fi camel running in the desert")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -459,7 +459,7 @@ public void testInvokeTitanPremierModel() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("inputText", - new TextNode( + new StringNode( "User: Generate synthetic data for daily product sales in various categories - include row number, product name, category, date of sale and price. Produce output in JSON format. Count records and ensure there are no more than 5.")); ArrayNode stopSequences = mapper.createArrayNode(); @@ -490,14 +490,14 @@ public void testInvokeNovaLiteModel() throws InterruptedException { ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); + element.putIfAbsent("role", new StringNode("user")); ArrayNode content = mapper.createArrayNode(); ObjectNode textContent = mapper.createObjectNode(); - textContent.putIfAbsent("type", new TextNode("text")); - textContent.putIfAbsent("text", new TextNode("Can you tell the history of Mayflower?")); + textContent.putIfAbsent("type", new StringNode("text")); + textContent.putIfAbsent("text", new StringNode("Can you tell the history of Mayflower?")); content.add(textContent); @@ -527,8 +527,8 @@ public void testInvokeJamba15LargeModel() throws InterruptedException { ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); - element.putIfAbsent("content", new TextNode("Can you tell the history of Mayflower?")); + element.putIfAbsent("role", new StringNode("user")); + element.putIfAbsent("content", new StringNode("Can you tell the history of Mayflower?")); messages.add(element); @@ -552,7 +552,7 @@ public void testInvokeCohereCommandRModel() throws InterruptedException { final Exchange result = template.send("direct:send_cohere_command_r", exchange -> { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - rootNode.putIfAbsent("message", new TextNode("Can you tell the history of Mayflower?")); + rootNode.putIfAbsent("message", new StringNode("Can you tell the history of Mayflower?")); rootNode.putIfAbsent("max_tokens", new IntNode(1000)); rootNode.putIfAbsent("temperature", new DoubleNode(0.7)); rootNode.putIfAbsent("p", new DoubleNode(0.9)); @@ -572,7 +572,7 @@ public void testInvokeLlama38BInstructModel() throws InterruptedException { final Exchange result = template.send("direct:send_llama3_8b_instruct", exchange -> { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - rootNode.putIfAbsent("prompt", new TextNode( + rootNode.putIfAbsent("prompt", new StringNode( "<|begin_of_text|><|start_header_id|>user<|end_header_id|>\n\nCan you tell the history of Mayflower?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n")); rootNode.putIfAbsent("max_gen_len", new IntNode(1000)); rootNode.putIfAbsent("temperature", new DoubleNode(0.7)); @@ -594,7 +594,7 @@ public void testInvokeMistralLarge2407Model() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); + new StringNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); rootNode.putIfAbsent("max_tokens", new IntNode(300)); rootNode.putIfAbsent("temperature", new DoubleNode(0.5)); @@ -620,14 +620,14 @@ public void testInvokeNovaMicroModel() throws InterruptedException { ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); + element.putIfAbsent("role", new StringNode("user")); ArrayNode content = mapper.createArrayNode(); ObjectNode textContent = mapper.createObjectNode(); - textContent.putIfAbsent("type", new TextNode("text")); - textContent.putIfAbsent("text", new TextNode("Can you tell the history of Mayflower?")); + textContent.putIfAbsent("type", new StringNode("text")); + textContent.putIfAbsent("text", new StringNode("Can you tell the history of Mayflower?")); content.add(textContent); @@ -657,14 +657,14 @@ public void testInvokeNovaProModel() throws InterruptedException { ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); + element.putIfAbsent("role", new StringNode("user")); ArrayNode content = mapper.createArrayNode(); ObjectNode textContent = mapper.createObjectNode(); - textContent.putIfAbsent("type", new TextNode("text")); - textContent.putIfAbsent("text", new TextNode("Can you tell the history of Mayflower?")); + textContent.putIfAbsent("type", new StringNode("text")); + textContent.putIfAbsent("text", new StringNode("Can you tell the history of Mayflower?")); content.add(textContent); @@ -694,8 +694,8 @@ public void testInvokeJamba15MiniModel() throws InterruptedException { ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); - element.putIfAbsent("content", new TextNode("Can you tell the history of Mayflower?")); + element.putIfAbsent("role", new StringNode("user")); + element.putIfAbsent("content", new StringNode("Can you tell the history of Mayflower?")); messages.add(element); @@ -719,7 +719,7 @@ public void testInvokeCohereCommandRPlusModel() throws InterruptedException { final Exchange result = template.send("direct:send_cohere_command_r_plus", exchange -> { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - rootNode.putIfAbsent("message", new TextNode("Can you tell the history of Mayflower?")); + rootNode.putIfAbsent("message", new StringNode("Can you tell the history of Mayflower?")); rootNode.putIfAbsent("max_tokens", new IntNode(1000)); rootNode.putIfAbsent("temperature", new DoubleNode(0.7)); rootNode.putIfAbsent("p", new DoubleNode(0.9)); @@ -739,7 +739,7 @@ public void testInvokeLlama31_70BInstructModel() throws InterruptedException { final Exchange result = template.send("direct:send_llama31_70b_instruct", exchange -> { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - rootNode.putIfAbsent("prompt", new TextNode( + rootNode.putIfAbsent("prompt", new StringNode( "<|begin_of_text|><|start_header_id|>user<|end_header_id|>\n\nCan you tell the history of Mayflower?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n")); rootNode.putIfAbsent("max_gen_len", new IntNode(1000)); rootNode.putIfAbsent("temperature", new DoubleNode(0.7)); @@ -760,7 +760,7 @@ public void testInvokeLlama32_11BInstructModel() throws InterruptedException { final Exchange result = template.send("direct:send_llama32_11b_instruct", exchange -> { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - rootNode.putIfAbsent("prompt", new TextNode( + rootNode.putIfAbsent("prompt", new StringNode( "<|begin_of_text|><|start_header_id|>user<|end_header_id|>\n\nCan you tell the history of Mayflower?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n")); rootNode.putIfAbsent("max_gen_len", new IntNode(1000)); rootNode.putIfAbsent("temperature", new DoubleNode(0.7)); @@ -785,14 +785,14 @@ public void testInvokeAnthropicClaude35Sonnet2Model() throws InterruptedExceptio ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); + element.putIfAbsent("role", new StringNode("user")); ArrayNode content = mapper.createArrayNode(); ObjectNode textContent = mapper.createObjectNode(); - textContent.putIfAbsent("type", new TextNode("text")); - textContent.putIfAbsent("text", new TextNode("Can you tell the history of Mayflower?")); + textContent.putIfAbsent("type", new StringNode("text")); + textContent.putIfAbsent("text", new StringNode("Can you tell the history of Mayflower?")); content.add(textContent); @@ -802,7 +802,7 @@ public void testInvokeAnthropicClaude35Sonnet2Model() throws InterruptedExceptio rootNode.putIfAbsent("messages", messages); rootNode.putIfAbsent("max_tokens", new IntNode(1000)); - rootNode.putIfAbsent("anthropic_version", new TextNode("bedrock-2023-05-31")); + rootNode.putIfAbsent("anthropic_version", new StringNode("bedrock-2023-05-31")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -823,14 +823,14 @@ public void testInvokeAnthropicClaude35HaikuModel() throws InterruptedException ArrayNode messages = mapper.createArrayNode(); ObjectNode element = mapper.createObjectNode(); - element.putIfAbsent("role", new TextNode("user")); + element.putIfAbsent("role", new StringNode("user")); ArrayNode content = mapper.createArrayNode(); ObjectNode textContent = mapper.createObjectNode(); - textContent.putIfAbsent("type", new TextNode("text")); - textContent.putIfAbsent("text", new TextNode("Can you tell the history of Mayflower?")); + textContent.putIfAbsent("type", new StringNode("text")); + textContent.putIfAbsent("text", new StringNode("Can you tell the history of Mayflower?")); content.add(textContent); @@ -840,7 +840,7 @@ public void testInvokeAnthropicClaude35HaikuModel() throws InterruptedException rootNode.putIfAbsent("messages", messages); rootNode.putIfAbsent("max_tokens", new IntNode(1000)); - rootNode.putIfAbsent("anthropic_version", new TextNode("bedrock-2023-05-31")); + rootNode.putIfAbsent("anthropic_version", new StringNode("bedrock-2023-05-31")); exchange.getMessage().setBody(mapper.writer().writeValueAsString(rootNode)); exchange.getMessage().setHeader(BedrockConstants.MODEL_CONTENT_TYPE, "application/json"); @@ -858,7 +858,7 @@ public void testInvokeMistralSmall2402Model() throws InterruptedException { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putIfAbsent("prompt", - new TextNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); + new StringNode("\"[INST] Can you tell the history of Mayflower? [/INST]\\\"")); rootNode.putIfAbsent("max_tokens", new IntNode(300)); rootNode.putIfAbsent("temperature", new DoubleNode(0.5)); diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/integration/BedrockProducerStreamingIT.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/integration/BedrockProducerStreamingIT.java index 72dfedfa05d3b..d4c6e4c8f5f25 100644 --- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/integration/BedrockProducerStreamingIT.java +++ b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/runtime/integration/BedrockProducerStreamingIT.java @@ -19,11 +19,6 @@ import java.util.List; import java.util.concurrent.TimeUnit; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.IntNode; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.node.TextNode; import org.apache.camel.EndpointInject; import org.apache.camel.Exchange; import org.apache.camel.ProducerTemplate; @@ -41,6 +36,11 @@ import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.IntNode; +import tools.jackson.databind.node.ObjectNode; +import tools.jackson.databind.node.StringNode; import static org.junit.jupiter.api.Assertions.*; @@ -75,7 +75,7 @@ public void testInvokeTitanExpressModelStreamingComplete() throws InterruptedExc final Exchange resultExchange = template.send("direct:send_titan_express_streaming_complete", exchange -> { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - rootNode.putIfAbsent("inputText", new TextNode("Write a short poem about Apache Camel.")); + rootNode.putIfAbsent("inputText", new StringNode("Write a short poem about Apache Camel.")); ArrayNode stopSequences = mapper.createArrayNode(); stopSequences.add("User:"); @@ -123,7 +123,7 @@ public void testInvokeTitanExpressModelStreamingChunks() throws InterruptedExcep final Exchange resultExchange = template.send("direct:send_titan_express_streaming_chunks", exchange -> { ObjectMapper mapper = new ObjectMapper(); ObjectNode rootNode = mapper.createObjectNode(); - rootNode.putIfAbsent("inputText", new TextNode("Count from 1 to 5.")); + rootNode.putIfAbsent("inputText", new StringNode("Count from 1 to 5.")); ArrayNode stopSequences = mapper.createArrayNode(); ObjectNode childNode = mapper.createObjectNode(); diff --git a/components/camel-aws/camel-aws-secrets-manager/pom.xml b/components/camel-aws/camel-aws-secrets-manager/pom.xml index 91f2e8cbc6bf2..df0aed1de2547 100644 --- a/components/camel-aws/camel-aws-secrets-manager/pom.xml +++ b/components/camel-aws/camel-aws-secrets-manager/pom.xml @@ -76,7 +76,7 @@ ${aws-java-sdk2-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerPropertiesFunction.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerPropertiesFunction.java index e606a2a25cccb..da720c3c1eac3 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerPropertiesFunction.java +++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/SecretsManagerPropertiesFunction.java @@ -21,9 +21,6 @@ import java.util.HashSet; import java.util.Set; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; @@ -41,6 +38,9 @@ import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueRequest; import software.amazon.awssdk.services.secretsmanager.model.GetSecretValueResponse; import software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * A {@link PropertiesFunction} that lookup the property value from AWS Secrets Manager service. @@ -263,7 +263,7 @@ public String apply(String remainder) { private String getSecretFromSource( String key, String subkey, String defaultValue, String version) - throws JsonProcessingException { + throws JacksonException { // capture name of secret secrets.add(key); diff --git a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/vault/CloudTrailReloadTriggerTask.java b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/vault/CloudTrailReloadTriggerTask.java index e64edf3623fc5..4d06f47d71e09 100644 --- a/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/vault/CloudTrailReloadTriggerTask.java +++ b/components/camel-aws/camel-aws-secrets-manager/src/main/java/org/apache/camel/component/aws/secretsmanager/vault/CloudTrailReloadTriggerTask.java @@ -25,9 +25,6 @@ import java.util.Map; import java.util.Set; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; @@ -61,6 +58,9 @@ import software.amazon.awssdk.services.sqs.model.QueueDoesNotExistException; import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest; import software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Period task which checks if AWS secrets has been updated and can trigger Camel to be reloaded. @@ -334,7 +334,7 @@ public void run() { JsonNode event = null; try { event = mapper.readTree(message.body()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } if (ObjectHelper.isNotEmpty(event.get("detail"))) { diff --git a/components/camel-aws/camel-aws2-ddb/pom.xml b/components/camel-aws/camel-aws2-ddb/pom.xml index 5b8cd32d219cc..c1bb71c4041b8 100644 --- a/components/camel-aws/camel-aws2-ddb/pom.xml +++ b/components/camel-aws/camel-aws2-ddb/pom.xml @@ -79,6 +79,11 @@ + + tools.jackson.core + jackson-databind + + diff --git a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java index 5cb3bdbf4ddf7..2d81a4fb4d346 100644 --- a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java +++ b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java @@ -25,8 +25,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; import org.apache.camel.CamelExecutionException; import org.apache.camel.Message; import org.apache.camel.component.aws2.ddb.Ddb2Constants; @@ -41,6 +39,8 @@ import software.amazon.awssdk.services.dynamodb.model.AttributeValue; import software.amazon.awssdk.services.dynamodb.model.AttributeValueUpdate; import software.amazon.awssdk.services.dynamodb.model.ReturnValue; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JsonNode; /** * Maps Json body to DynamoDB attribute value map and sets the attribute map as Camel DynamoDB header entries. diff --git a/components/camel-azure/camel-azure-cosmosdb/pom.xml b/components/camel-azure/camel-azure-cosmosdb/pom.xml index e9f14be76d15c..099c507939a1a 100644 --- a/components/camel-azure/camel-azure-cosmosdb/pom.xml +++ b/components/camel-azure/camel-azure-cosmosdb/pom.xml @@ -57,6 +57,10 @@ commons-io ${commons-io-version} + + tools.jackson.core + jackson-databind + diff --git a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/operations/CosmosDbContainerOperations.java b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/operations/CosmosDbContainerOperations.java index 1bc968ae51626..2dd6e18238aa2 100644 --- a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/operations/CosmosDbContainerOperations.java +++ b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/operations/CosmosDbContainerOperations.java @@ -25,7 +25,6 @@ import com.azure.cosmos.ChangeFeedProcessor; import com.azure.cosmos.ChangeFeedProcessorBuilder; import com.azure.cosmos.CosmosAsyncContainer; -import com.azure.cosmos.implementation.Utils; import com.azure.cosmos.models.ChangeFeedProcessorOptions; import com.azure.cosmos.models.CosmosContainerRequestOptions; import com.azure.cosmos.models.CosmosContainerResponse; @@ -36,11 +35,15 @@ import com.azure.cosmos.models.PartitionKey; import com.azure.cosmos.models.ThroughputProperties; import com.azure.cosmos.models.ThroughputResponse; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.azure.cosmosdb.CosmosDbUtils; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import tools.jackson.core.StreamWriteFeature; +import tools.jackson.core.json.JsonReadFeature; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class CosmosDbContainerOperations { @@ -170,6 +173,16 @@ public Flux> queryItemsAsFeed( .flatMapMany(container -> container.queryItems(query, queryRequestOptions, itemType).byPage()); } + private ObjectMapper createAndInitializeObjectMapper() { + ObjectMapper objectMapper = JsonMapper.builder() + .enable(JsonReadFeature.ALLOW_SINGLE_QUOTES) + .enable(JsonReadFeature.ALLOW_TRAILING_COMMA) + .enable(StreamWriteFeature.STRICT_DUPLICATE_DETECTION) + .disable(DeserializationFeature.ACCEPT_FLOAT_AS_INT) + .build(); + return objectMapper; + } + public ChangeFeedProcessor captureEventsWithChangeFeed( final Mono leaseContainerMono, final String hostName, final Consumer>> resultsCallback, final ChangeFeedProcessorOptions changeFeedProcessorOptions) { @@ -177,7 +190,7 @@ public ChangeFeedProcessor captureEventsWithChangeFeed( CosmosDbUtils.validateIfParameterIsNotEmpty(resultsCallback, PARAM_RESULTS_CALLBACK); CosmosDbUtils.validateIfParameterIsNotEmpty(hostName, PARAM_HOST_NAME); - final ObjectMapper mapper = Utils.getSimpleObjectMapper(); + final ObjectMapper mapper = createAndInitializeObjectMapper(); return container.zipWith(leaseContainerMono) .map(tupleResults -> { diff --git a/components/camel-azure/camel-azure-key-vault/pom.xml b/components/camel-azure/camel-azure-key-vault/pom.xml index 9f0c8b0a8c340..b23f478274741 100644 --- a/components/camel-azure/camel-azure-key-vault/pom.xml +++ b/components/camel-azure/camel-azure-key-vault/pom.xml @@ -69,6 +69,10 @@ commons-io ${commons-io-version} + + tools.jackson.core + jackson-databind + diff --git a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/EventhubsReloadTriggerTask.java b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/EventhubsReloadTriggerTask.java index 173e8b8b9a4f6..d1296960490c3 100644 --- a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/EventhubsReloadTriggerTask.java +++ b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/EventhubsReloadTriggerTask.java @@ -33,9 +33,6 @@ import com.azure.storage.blob.BlobContainerAsyncClient; import com.azure.storage.blob.BlobContainerClientBuilder; import com.azure.storage.common.StorageSharedKeyCredential; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; @@ -49,6 +46,9 @@ import org.apache.camel.vault.AzureVaultConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Period task which checks if Azure Key Vaults secrets has been updated and can trigger Camel to be reloaded. @@ -245,7 +245,7 @@ protected void onEventListener(final EventContext eventContext) { private static JsonNode retrieveEventData(EventContext eventContext, ObjectMapper mapper) { try { return mapper.readTree(eventContext.getEventData().getBodyAsString()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { LOG.warn("Unable to process event data body: {}", e.getMessage(), e); throw new RuntimeCamelException(e); } diff --git a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultPropertiesFunction.java b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultPropertiesFunction.java index c6903b40ee228..c1a526a9125c2 100644 --- a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultPropertiesFunction.java +++ b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultPropertiesFunction.java @@ -27,9 +27,6 @@ import com.azure.security.keyvault.secrets.SecretClient; import com.azure.security.keyvault.secrets.SecretClientBuilder; import com.azure.security.keyvault.secrets.models.KeyVaultSecret; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; @@ -38,6 +35,9 @@ import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.StringHelper; import org.apache.camel.vault.AzureVaultConfiguration; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * A {@link PropertiesFunction} that lookup the property value from Azure Key Vault service. @@ -201,7 +201,7 @@ public String apply(String remainder) { if (key != null) { try { returnValue = getSecretFromSource(key, subkey, defaultValue, version); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeCamelException( "Error getting secret from vault using key: " + key + " due to: " + e.getMessage(), e); } @@ -212,7 +212,7 @@ public String apply(String remainder) { private String getSecretFromSource( String key, String subkey, String defaultValue, String version) - throws JsonProcessingException { + throws JacksonException { String returnValue; // capture name of secret diff --git a/components/camel-azure/camel-azure-storage-blob/pom.xml b/components/camel-azure/camel-azure-storage-blob/pom.xml index d1041a9e9e999..85e358e0bb83c 100644 --- a/components/camel-azure/camel-azure-storage-blob/pom.xml +++ b/components/camel-azure/camel-azure-storage-blob/pom.xml @@ -61,11 +61,11 @@ azure-identity - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - com.fasterxml.jackson.core + tools.jackson.core jackson-core @@ -73,7 +73,7 @@ jackson-annotations - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-xml diff --git a/components/camel-azure/camel-azure-storage-queue/pom.xml b/components/camel-azure/camel-azure-storage-queue/pom.xml index d383b3ee324d0..6b5dc4e0bba47 100644 --- a/components/camel-azure/camel-azure-storage-queue/pom.xml +++ b/components/camel-azure/camel-azure-storage-queue/pom.xml @@ -53,11 +53,11 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - com.fasterxml.jackson.core + tools.jackson.core jackson-core @@ -65,7 +65,7 @@ jackson-annotations - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-xml diff --git a/components/camel-bonita/pom.xml b/components/camel-bonita/pom.xml index 9863ec2276b4f..f06d730d1fb84 100644 --- a/components/camel-bonita/pom.xml +++ b/components/camel-bonita/pom.xml @@ -53,7 +53,7 @@ ${cxf-version} - com.fasterxml.jackson.jakarta.rs + tools.jackson.jakarta.rs jackson-jakarta-rs-json-provider diff --git a/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/api/BonitaAPIBuilder.java b/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/api/BonitaAPIBuilder.java index cedf13c707109..40cf69341a7cb 100644 --- a/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/api/BonitaAPIBuilder.java +++ b/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/api/BonitaAPIBuilder.java @@ -20,9 +20,9 @@ import jakarta.ws.rs.client.ClientBuilder; import jakarta.ws.rs.client.WebTarget; -import com.fasterxml.jackson.jakarta.rs.json.JacksonJsonProvider; import org.apache.camel.component.bonita.api.filter.BonitaAuthFilter; import org.apache.camel.component.bonita.api.util.BonitaAPIConfig; +import tools.jackson.jakarta.rs.json.JacksonJsonProvider; public class BonitaAPIBuilder { diff --git a/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/api/util/BonitaAPIUtil.java b/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/api/util/BonitaAPIUtil.java index 950fdf068f914..8fd00b9ebca6c 100644 --- a/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/api/util/BonitaAPIUtil.java +++ b/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/api/util/BonitaAPIUtil.java @@ -30,7 +30,6 @@ import jakarta.ws.rs.client.WebTarget; import jakarta.ws.rs.core.MediaType; -import com.fasterxml.jackson.jakarta.rs.json.JacksonJsonProvider; import org.apache.camel.component.bonita.api.filter.BonitaAuthFilter; import org.apache.camel.component.bonita.api.filter.JsonClientFilter; import org.apache.camel.component.bonita.api.model.FileInput; @@ -39,6 +38,7 @@ import org.apache.cxf.jaxrs.ext.multipart.Attachment; import org.apache.cxf.jaxrs.ext.multipart.AttachmentBuilder; import org.apache.cxf.jaxrs.ext.multipart.ContentDisposition; +import tools.jackson.jakarta.rs.json.JacksonJsonProvider; import static jakarta.ws.rs.client.Entity.entity; diff --git a/components/camel-cbor/pom.xml b/components/camel-cbor/pom.xml index 916a38aaf095c..2c1be665e3b9e 100644 --- a/components/camel-cbor/pom.xml +++ b/components/camel-cbor/pom.xml @@ -46,12 +46,12 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-cbor diff --git a/components/camel-cbor/src/generated/java/org/apache/camel/component/cbor/CBORDataFormatConfigurer.java b/components/camel-cbor/src/generated/java/org/apache/camel/component/cbor/CBORDataFormatConfigurer.java index 35bdcb499bb33..a1da2182113ea 100644 --- a/components/camel-cbor/src/generated/java/org/apache/camel/component/cbor/CBORDataFormatConfigurer.java +++ b/components/camel-cbor/src/generated/java/org/apache/camel/component/cbor/CBORDataFormatConfigurer.java @@ -27,7 +27,7 @@ public class CBORDataFormatConfigurer extends org.apache.camel.support.component map.put("CollectionType", java.lang.Class.class); map.put("DisableFeatures", java.lang.String.class); map.put("EnableFeatures", java.lang.String.class); - map.put("ObjectMapper", com.fasterxml.jackson.databind.ObjectMapper.class); + map.put("ObjectMapper", tools.jackson.databind.ObjectMapper.class); map.put("PrettyPrint", boolean.class); map.put("UnmarshalType", java.lang.Class.class); map.put("UseDefaultObjectMapper", boolean.class); @@ -50,7 +50,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "enablefeatures": case "enableFeatures": target.setEnableFeatures(property(camelContext, java.lang.String.class, value)); return true; case "objectmapper": - case "objectMapper": target.setObjectMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; + case "objectMapper": target.setObjectMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; case "prettyprint": case "prettyPrint": target.setPrettyPrint(property(camelContext, boolean.class, value)); return true; case "unmarshaltype": @@ -82,7 +82,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "enablefeatures": case "enableFeatures": return java.lang.String.class; case "objectmapper": - case "objectMapper": return com.fasterxml.jackson.databind.ObjectMapper.class; + case "objectMapper": return tools.jackson.databind.ObjectMapper.class; case "prettyprint": case "prettyPrint": return boolean.class; case "unmarshaltype": diff --git a/components/camel-cbor/src/main/java/org/apache/camel/component/cbor/CBORDataFormat.java b/components/camel-cbor/src/main/java/org/apache/camel/component/cbor/CBORDataFormat.java index 9f547509567a3..cba5d40331c29 100644 --- a/components/camel-cbor/src/main/java/org/apache/camel/component/cbor/CBORDataFormat.java +++ b/components/camel-cbor/src/main/java/org/apache/camel/component/cbor/CBORDataFormat.java @@ -29,14 +29,6 @@ import java.util.Set; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.type.CollectionType; -import com.fasterxml.jackson.dataformat.cbor.CBORFactory; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.Exchange; @@ -49,6 +41,16 @@ import org.apache.camel.util.CastUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.TokenStreamFactory; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.type.CollectionType; +import tools.jackson.dataformat.cbor.CBORFactory; +import tools.jackson.dataformat.cbor.CBORMapper; @Dataformat("cbor") public class CBORDataFormat extends ServiceSupport implements DataFormat, DataFormatName, CamelContextAware { @@ -358,10 +360,12 @@ protected void doInit() throws Exception { if (objectMapper == null) { // lookup if there is a single default mapper we can use if (useDefaultObjectMapper && camelContext != null) { - Set set = camelContext.getRegistry().findByType(ObjectMapper.class); - set = set.stream().filter(om -> om.getFactory() instanceof CBORFactory).collect(Collectors.toSet()); + Set set = camelContext.getRegistry().findByType(TokenStreamFactory.class); + set = set.stream().filter(om -> om instanceof CBORFactory).collect(Collectors.toSet()); if (set.size() == 1) { - objectMapper = set.iterator().next(); + CBORFactory cborf = (CBORFactory) set.iterator().next(); + objectMapper = CBORMapper.builder(cborf) + .build(); LOG.info( "Found a single ObjectMapper with a CBORFactory in the registry, so promoting it as the default ObjectMapper: {}", objectMapper); @@ -384,7 +388,9 @@ protected void doInit() throws Exception { } if (prettyPrint) { - objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + objectMapper.rebuild() + .enable(SerializationFeature.INDENT_OUTPUT) + .build(); } if (enableFeatures != null) { @@ -394,18 +400,24 @@ protected void doInit() throws Exception { // it can be different kind SerializationFeature sf = getCamelContext().getTypeConverter().tryConvertTo(SerializationFeature.class, enable); if (sf != null) { - objectMapper.enable(sf); + objectMapper = objectMapper.rebuild() + .enable(sf) + .build(); continue; } DeserializationFeature df = getCamelContext().getTypeConverter().tryConvertTo(DeserializationFeature.class, enable); if (df != null) { - objectMapper.enable(df); + objectMapper = objectMapper.rebuild() + .enable(df) + .build(); continue; } MapperFeature mf = getCamelContext().getTypeConverter().tryConvertTo(MapperFeature.class, enable); if (mf != null) { - objectMapper.enable(mf); + objectMapper = objectMapper.rebuild() + .enable(mf) + .build(); continue; } throw new IllegalArgumentException( @@ -421,18 +433,18 @@ protected void doInit() throws Exception { SerializationFeature sf = getCamelContext().getTypeConverter().tryConvertTo(SerializationFeature.class, disable); if (sf != null) { - objectMapper.disable(sf); + objectMapper = objectMapper.rebuild().disable(sf).build(); continue; } DeserializationFeature df = getCamelContext().getTypeConverter().tryConvertTo(DeserializationFeature.class, disable); if (df != null) { - objectMapper.disable(df); + objectMapper = objectMapper.rebuild().disable(df).build(); continue; } MapperFeature mf = getCamelContext().getTypeConverter().tryConvertTo(MapperFeature.class, disable); if (mf != null) { - objectMapper.disable(mf); + objectMapper = objectMapper.rebuild().disable(mf).build(); continue; } throw new IllegalArgumentException( diff --git a/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORMarshalAllowJMSTypeTest.java b/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORMarshalAllowJMSTypeTest.java index e33bf9e1db9c6..6598a4bfd37bd 100644 --- a/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORMarshalAllowJMSTypeTest.java +++ b/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORMarshalAllowJMSTypeTest.java @@ -16,12 +16,12 @@ */ package org.apache.camel.component.cbor; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.cbor.CBORFactory; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.dataformat.cbor.CBORFactory; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORObjectListSplitTest.java b/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORObjectListSplitTest.java index 3402dd08324f4..b6e6ab68cd7f2 100644 --- a/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORObjectListSplitTest.java +++ b/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORObjectListSplitTest.java @@ -19,19 +19,19 @@ import java.util.ArrayList; import java.util.List; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.cbor.CBORFactory; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.dataformat.cbor.CBORFactory; import static org.apache.camel.test.junit6.TestSupport.body; public class CBORObjectListSplitTest extends CamelTestSupport { @Test - void testCBOR() throws InterruptedException, JsonProcessingException { + void testCBOR() throws InterruptedException, JacksonException { getMockEndpoint("mock:result").expectedMessageCount(2); getMockEndpoint("mock:result").expectedMessagesMatches(body().isInstanceOf(DummyObject.class)); diff --git a/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORUseDefaultMapperWithNonCBORMapperInRegistryTest.java b/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORUseDefaultMapperWithNonCBORMapperInRegistryTest.java index 98de310d97623..7ea5eaf16b674 100644 --- a/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORUseDefaultMapperWithNonCBORMapperInRegistryTest.java +++ b/components/camel-cbor/src/test/java/org/apache/camel/component/cbor/CBORUseDefaultMapperWithNonCBORMapperInRegistryTest.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.cbor; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/components/camel-clickup/pom.xml b/components/camel-clickup/pom.xml index 19cb308359489..a1f2e29a99947 100644 --- a/components/camel-clickup/pom.xml +++ b/components/camel-clickup/pom.xml @@ -51,16 +51,16 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core - com.fasterxml.jackson.core - jackson-annotations + tools.jackson.core + jackson-databind - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 + com.fasterxml.jackson.core + jackson-annotations diff --git a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/ClickUpWebhookProcessor.java b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/ClickUpWebhookProcessor.java index 7b3734448f90b..e3fb0e440c1a6 100644 --- a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/ClickUpWebhookProcessor.java +++ b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/ClickUpWebhookProcessor.java @@ -19,7 +19,6 @@ import java.io.IOException; import java.io.InputStream; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.AsyncCallback; import org.apache.camel.AsyncProcessor; import org.apache.camel.Exchange; @@ -29,6 +28,7 @@ import org.apache.camel.component.clickup.service.ClickUpWebhookService; import org.apache.camel.support.AsyncProcessorConverterHelper; import org.apache.camel.support.AsyncProcessorSupport; +import tools.jackson.databind.ObjectMapper; public class ClickUpWebhookProcessor extends AsyncProcessorSupport { diff --git a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/UnixTimestampDeserializer.java b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/UnixTimestampDeserializer.java index a624a043d76bf..ff3f7b046488d 100644 --- a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/UnixTimestampDeserializer.java +++ b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/UnixTimestampDeserializer.java @@ -17,24 +17,24 @@ package org.apache.camel.component.clickup; -import java.io.IOException; import java.time.Instant; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.ValueDeserializer; /** * A deserializer for a unix timestamp expressed in milliseconds. */ -public class UnixTimestampDeserializer extends JsonDeserializer { +public class UnixTimestampDeserializer extends ValueDeserializer { private Logger log = LoggerFactory.getLogger(getClass()); @Override - public Instant deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + public Instant deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws JacksonException { try { long unixTimestamp = Long.parseLong(jsonParser.getText()); diff --git a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/UnixTimestampSerializer.java b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/UnixTimestampSerializer.java index d6533b0e853e0..6e12abc4e9c89 100644 --- a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/UnixTimestampSerializer.java +++ b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/UnixTimestampSerializer.java @@ -17,20 +17,20 @@ package org.apache.camel.component.clickup; -import java.io.IOException; import java.time.Instant; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; +import tools.jackson.core.JacksonException; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; /** * A serializer for {@link java.time.Instant} compatible with {@link UnixTimestampDeserializer}. */ -public class UnixTimestampSerializer extends JsonSerializer { +public class UnixTimestampSerializer extends ValueSerializer { @Override - public void serialize(Instant value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + public void serialize(Instant value, JsonGenerator gen, SerializationContext serializers) throws JacksonException { gen.writeNumber(value.toEpochMilli()); } diff --git a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/model/HistoryItem.java b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/model/HistoryItem.java index f9e1d948d8c9c..2e52ac4896cb5 100644 --- a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/model/HistoryItem.java +++ b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/model/HistoryItem.java @@ -22,10 +22,10 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import org.apache.camel.component.clickup.UnixTimestampDeserializer; import org.apache.camel.component.clickup.UnixTimestampSerializer; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; @JsonIgnoreProperties(ignoreUnknown = true) public abstract class HistoryItem implements Serializable { diff --git a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/model/TimeSpentHistoryItemState.java b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/model/TimeSpentHistoryItemState.java index 9df97d97a58ac..482c315385c1d 100644 --- a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/model/TimeSpentHistoryItemState.java +++ b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/model/TimeSpentHistoryItemState.java @@ -22,10 +22,10 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import org.apache.camel.component.clickup.UnixTimestampDeserializer; import org.apache.camel.component.clickup.UnixTimestampSerializer; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; @JsonIgnoreProperties(ignoreUnknown = true) public class TimeSpentHistoryItemState implements Serializable { diff --git a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/service/ClickUpServiceApiImpl.java b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/service/ClickUpServiceApiImpl.java index eb07e566cbfd2..2f745590c2b70 100644 --- a/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/service/ClickUpServiceApiImpl.java +++ b/components/camel-clickup/src/main/java/org/apache/camel/component/clickup/service/ClickUpServiceApiImpl.java @@ -23,13 +23,13 @@ import java.net.http.HttpResponse; import java.util.Set; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.clickup.model.Webhook; import org.apache.camel.component.clickup.model.WebhookCreationCommand; import org.apache.camel.component.clickup.model.WebhookCreationResult; import org.apache.camel.component.clickup.model.WebhooksReadResult; import org.apache.camel.component.clickup.model.errors.WebhookAlreadyExistsException; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public class ClickUpServiceApiImpl implements ClickUpService { @@ -52,7 +52,7 @@ public Webhook createWebhook(Long workspaceId, WebhookCreationCommand command) { String payload; try { payload = MAPPER.writeValueAsString(command); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } @@ -76,7 +76,7 @@ public Webhook createWebhook(Long workspaceId, WebhookCreationCommand command) { String body = response.body(); result = MAPPER.readValue(body, WebhookCreationResult.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } @@ -115,7 +115,7 @@ public Set getWebhooks(Long workspaceId) { String body = response.body(); result = MAPPER.readValue(body, WebhooksReadResult.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } diff --git a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationAlreadyExistsTest.java b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationAlreadyExistsTest.java index c1658407bff08..dc2bdf023f969 100644 --- a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationAlreadyExistsTest.java +++ b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationAlreadyExistsTest.java @@ -29,8 +29,6 @@ import java.util.Set; import java.util.concurrent.TimeUnit; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Endpoint; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.clickup.model.Webhook; @@ -44,6 +42,8 @@ import org.apache.camel.test.junit6.TestExecutionConfiguration; import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.*; @@ -115,7 +115,7 @@ public void configure() { WebhookCreationCommand command = MAPPER.readValue(webhookCreationMessage, WebhookCreationCommand.class); assertInstanceOf(WebhookCreationCommand.class, command); - } catch (IOException e) { + } catch (JacksonException e) { fail(e); } @@ -197,7 +197,7 @@ protected ClickUpMockRoutes createMockRoutes() { String readWebhooksResponseBody; try { readWebhooksResponseBody = MAPPER.writeValueAsString(webhooksReadResult); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } diff --git a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationTest.java b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationTest.java index fdc3f55bd4363..ec09b0bb44e5d 100644 --- a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationTest.java +++ b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/ClickUpWebhookRegistrationTest.java @@ -27,7 +27,6 @@ import java.util.Set; import java.util.concurrent.TimeUnit; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.clickup.model.WebhookCreationCommand; import org.apache.camel.component.clickup.util.ClickUpMockRoutes; @@ -36,6 +35,8 @@ import org.apache.camel.test.junit6.TestExecutionConfiguration; import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.*; @@ -80,8 +81,8 @@ public void testAutomaticRegistration() throws Exception { WebhookCreationCommand command = MAPPER.readValue(recordedMessage, WebhookCreationCommand.class); assertInstanceOf(WebhookCreationCommand.class, command); - } catch (IOException e) { - throw new AssertionError("Failed to parse recorded message", e); + } catch (JacksonException e) { + fail(e); } mockProcessor.clearRecordedMessages(); diff --git a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpMockRoutes.java b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpMockRoutes.java index 203f9573f5462..94758d8e5194a 100644 --- a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpMockRoutes.java +++ b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpMockRoutes.java @@ -20,7 +20,6 @@ import java.util.*; import java.util.concurrent.TimeUnit; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.Processor; @@ -28,6 +27,7 @@ import org.awaitility.Awaitility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public class ClickUpMockRoutes extends RouteBuilder { private static final Logger LOG = LoggerFactory.getLogger(ClickUpMockRoutes.class); diff --git a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpTestSupport.java b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpTestSupport.java index c68c3bde21aaa..ec6ac65309703 100644 --- a/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpTestSupport.java +++ b/components/camel-clickup/src/test/java/org/apache/camel/component/clickup/util/ClickUpTestSupport.java @@ -19,12 +19,12 @@ import java.io.IOException; import java.io.InputStream; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.component.clickup.ClickUpComponent; import org.apache.camel.test.AvailablePortFinder; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.BeforeAll; +import tools.jackson.databind.ObjectMapper; /** * A support test class for ClickUp tests. diff --git a/components/camel-cxf/camel-cxf-spring-rest/pom.xml b/components/camel-cxf/camel-cxf-spring-rest/pom.xml index 4f5eb96115444..23c3de5192707 100644 --- a/components/camel-cxf/camel-cxf-spring-rest/pom.xml +++ b/components/camel-cxf/camel-cxf-spring-rest/pom.xml @@ -145,9 +145,9 @@ test - com.fasterxml.jackson.jakarta.rs + tools.jackson.jakarta.rs jackson-jakarta-rs-json-provider - ${jackson2-version} + ${jackson-version} test diff --git a/components/camel-cyberark-vault/pom.xml b/components/camel-cyberark-vault/pom.xml index 4516c32fb1c26..54cbee3fc4ba6 100644 --- a/components/camel-cyberark-vault/pom.xml +++ b/components/camel-cyberark-vault/pom.xml @@ -43,7 +43,7 @@ camel-support - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultPropertiesFunction.java b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultPropertiesFunction.java index d1bc3a40453bf..0f45ee37adc44 100644 --- a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultPropertiesFunction.java +++ b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultPropertiesFunction.java @@ -19,9 +19,6 @@ import java.util.HashSet; import java.util.Set; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; @@ -32,6 +29,9 @@ import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.StringHelper; import org.apache.camel.vault.CyberArkVaultConfiguration; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * A {@link PropertiesFunction} that lookup the property value from CyberArk Conjur Vault service. @@ -216,7 +216,7 @@ public String apply(String remainder) { private String getSecretFromSource( String key, String subkey, String defaultValue, String version) - throws JsonProcessingException { + throws JacksonException { // capture name of secret secrets.add(key); diff --git a/components/camel-dhis2/camel-dhis2-component/src/main/java/org/apache/camel/component/dhis2/Dhis2Converters.java b/components/camel-dhis2/camel-dhis2-component/src/main/java/org/apache/camel/component/dhis2/Dhis2Converters.java index e7ae5e6a455ad..7a5ebd7fbf391 100644 --- a/components/camel-dhis2/camel-dhis2-component/src/main/java/org/apache/camel/component/dhis2/Dhis2Converters.java +++ b/components/camel-dhis2/camel-dhis2-component/src/main/java/org/apache/camel/component/dhis2/Dhis2Converters.java @@ -16,11 +16,11 @@ */ package org.apache.camel.component.dhis2; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Converter; import org.apache.camel.Exchange; import org.apache.camel.component.dhis2.api.Dhis2Resource; import org.apache.camel.spi.TypeConverterRegistry; +import tools.jackson.databind.ObjectMapper; @Converter(generateLoader = true) public final class Dhis2Converters { diff --git a/components/camel-dropbox/pom.xml b/components/camel-dropbox/pom.xml index 6381f460bdcc1..d94f28fa69416 100644 --- a/components/camel-dropbox/pom.xml +++ b/components/camel-dropbox/pom.xml @@ -48,14 +48,14 @@ ${dropbox-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-core - com.fasterxml.jackson.core + tools.jackson.core jackson-core diff --git a/components/camel-elasticsearch-rest-client/pom.xml b/components/camel-elasticsearch-rest-client/pom.xml index e1957adbe7d89..a7f8ce9dec181 100644 --- a/components/camel-elasticsearch-rest-client/pom.xml +++ b/components/camel-elasticsearch-rest-client/pom.xml @@ -57,7 +57,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-elasticsearch-rest-client/src/main/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientProducer.java b/components/camel-elasticsearch-rest-client/src/main/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientProducer.java index dc9b82ee34b2b..35f841df1ba15 100644 --- a/components/camel-elasticsearch-rest-client/src/main/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientProducer.java +++ b/components/camel-elasticsearch-rest-client/src/main/java/org/apache/camel/component/elasticsearch/rest/client/ElasticsearchRestClientProducer.java @@ -29,10 +29,6 @@ import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.AsyncCallback; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; @@ -57,6 +53,10 @@ import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.sniff.Sniffer; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; import static org.apache.camel.component.elasticsearch.rest.client.ElasticSearchRestClientConstant.OPERATION; diff --git a/components/camel-elasticsearch/pom.xml b/components/camel-elasticsearch/pom.xml index 7cdb837c54e6c..d1f09e539ebe3 100644 --- a/components/camel-elasticsearch/pom.xml +++ b/components/camel-elasticsearch/pom.xml @@ -58,7 +58,7 @@ ${elasticsearch-java-client-sniffer-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/ElasticsearchConfiguration.java b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/ElasticsearchConfiguration.java index d08309282cdf0..4dc8ee16333ee 100644 --- a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/ElasticsearchConfiguration.java +++ b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/ElasticsearchConfiguration.java @@ -18,12 +18,12 @@ import java.util.List; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; import org.apache.camel.spi.UriPath; import org.apache.http.HttpHost; +import tools.jackson.databind.node.ObjectNode; @UriParams public class ElasticsearchConfiguration { diff --git a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/ElasticsearchProducer.java b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/ElasticsearchProducer.java index 0e57044b94f51..207eb5338d229 100644 --- a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/ElasticsearchProducer.java +++ b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/ElasticsearchProducer.java @@ -44,13 +44,11 @@ import co.elastic.clients.elasticsearch.indices.DeleteIndexRequest; import co.elastic.clients.elasticsearch.indices.DeleteIndexResponse; import co.elastic.clients.elasticsearch.indices.ExistsRequest; -import co.elastic.clients.json.jackson.JacksonJsonpMapper; +import co.elastic.clients.json.jackson.Jackson3JsonpMapper; import co.elastic.clients.transport.ElasticsearchTransport; import co.elastic.clients.transport.endpoints.BooleanResponse; import co.elastic.clients.transport.rest_client.RestClientOptions; import co.elastic.clients.transport.rest_client.RestClientTransport; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.AsyncCallback; import org.apache.camel.CamelExchangeException; import org.apache.camel.Exchange; @@ -70,6 +68,9 @@ import org.elasticsearch.client.sniff.SnifferBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; import static org.apache.camel.component.es.ElasticsearchConstants.PARAM_SCROLL; import static org.apache.camel.component.es.ElasticsearchConstants.PARAM_SCROLL_KEEP_ALIVE_MS; @@ -140,10 +141,12 @@ public boolean process(Exchange exchange, AsyncCallback callback) { if (configuration.isDisconnect() && client == null) { startClient(); } - final ObjectMapper mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + final ObjectMapper mapper = JsonMapper.builder() + .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) + .build(); RestClientOptions options = new RestClientOptions(RequestOptions.DEFAULT, true); - ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper(mapper), options); + Jackson3JsonpMapper jsonMapper = new Jackson3JsonpMapper((JsonMapper) mapper); + ElasticsearchTransport transport = new RestClientTransport(client, jsonMapper, options); // 2. Index and type will be set by: // a. If the incoming body is already an action request // b. If the body is not an action request we will use headers if they diff --git a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/converter/ElasticsearchActionRequestConverter.java b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/converter/ElasticsearchActionRequestConverter.java index 4ae90a194dfa9..8c37d6457e5ec 100644 --- a/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/converter/ElasticsearchActionRequestConverter.java +++ b/components/camel-elasticsearch/src/main/java/org/apache/camel/component/es/converter/ElasticsearchActionRequestConverter.java @@ -40,14 +40,14 @@ import co.elastic.clients.elasticsearch.core.bulk.UpdateOperation; import co.elastic.clients.elasticsearch.indices.DeleteIndexRequest; import co.elastic.clients.json.JsonData; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Converter; import org.apache.camel.Exchange; import org.apache.camel.component.es.ElasticsearchConstants; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; @Converter(generateLoader = true) public final class ElasticsearchActionRequestConverter { diff --git a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchBulkIT.java b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchBulkIT.java index ffb2b91164160..a7fcc842a54d0 100644 --- a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchBulkIT.java +++ b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchBulkIT.java @@ -36,9 +36,9 @@ import co.elastic.clients.elasticsearch.core.bulk.UpdateAction; import co.elastic.clients.elasticsearch.core.bulk.UpdateOperation; import co.elastic.clients.json.JsonData; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; +import tools.jackson.databind.node.ObjectNode; import static org.apache.camel.test.junit6.TestSupport.assertCollectionSize; import static org.hamcrest.CoreMatchers.equalTo; diff --git a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchClusterIndexIT.java b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchClusterIndexIT.java index 58f6d4fb4f278..cef92ee34c491 100644 --- a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchClusterIndexIT.java +++ b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchClusterIndexIT.java @@ -20,13 +20,13 @@ import java.util.Map; import co.elastic.clients.elasticsearch.core.GetRequest; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.es.ElasticsearchConstants; import org.apache.camel.component.es.ElasticsearchOperation; import org.apache.http.impl.client.BasicResponseHandler; import org.elasticsearch.client.Request; import org.junit.jupiter.api.Test; +import tools.jackson.databind.node.ObjectNode; import static org.apache.camel.test.junit6.TestSupport.assertStringContains; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchGetSearchDeleteExistsUpdateIT.java b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchGetSearchDeleteExistsUpdateIT.java index b2ef480062477..636b99d5b2b84 100644 --- a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchGetSearchDeleteExistsUpdateIT.java +++ b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchGetSearchDeleteExistsUpdateIT.java @@ -41,13 +41,13 @@ import co.elastic.clients.elasticsearch.core.search.HitsMetadata; import co.elastic.clients.elasticsearch.core.search.SearchRequestBody; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.es.ElasticsearchConstants; import org.apache.camel.component.es.ElasticsearchOperation; import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.ObjectNode; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; diff --git a/components/camel-elytron/pom.xml b/components/camel-elytron/pom.xml index 8a55c5b236a98..95cf06d4e8da4 100644 --- a/components/camel-elytron/pom.xml +++ b/components/camel-elytron/pom.xml @@ -69,7 +69,7 @@ ${undertow-ee-version} - com.fasterxml.jackson.jakarta.rs + tools.jackson.jakarta.rs jackson-jakarta-rs-json-provider diff --git a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableInboundChannelHeaderTest.java b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableInboundChannelHeaderTest.java index 18df1b8e5a668..926b79fe592f9 100644 --- a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableInboundChannelHeaderTest.java +++ b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableInboundChannelHeaderTest.java @@ -16,13 +16,13 @@ */ package org.apache.camel.component.flowable; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.Exchange; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableInboundChannelTest.java b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableInboundChannelTest.java index 39abdab437358..462cd12d86250 100644 --- a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableInboundChannelTest.java +++ b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableInboundChannelTest.java @@ -16,13 +16,13 @@ */ package org.apache.camel.component.flowable; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.Exchange; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableOutboundChannelTest.java b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableOutboundChannelTest.java index 6e4b548ef5701..8e92b06804487 100644 --- a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableOutboundChannelTest.java +++ b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableOutboundChannelTest.java @@ -16,12 +16,12 @@ */ package org.apache.camel.component.flowable; -import com.fasterxml.jackson.databind.JsonNode; import org.apache.camel.component.mock.MockEndpoint; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableRedeployChannelTest.java b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableRedeployChannelTest.java index 0544d22e9bd6d..b3086d9d46725 100644 --- a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableRedeployChannelTest.java +++ b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableRedeployChannelTest.java @@ -16,11 +16,11 @@ */ package org.apache.camel.component.flowable; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.Exchange; import org.flowable.engine.runtime.ProcessInstance; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableSendAndReceiveChannelTest.java b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableSendAndReceiveChannelTest.java index dc9b50a0e4a84..71125fbc878ea 100644 --- a/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableSendAndReceiveChannelTest.java +++ b/components/camel-flowable/src/test/java/org/apache/camel/component/flowable/FlowableSendAndReceiveChannelTest.java @@ -16,15 +16,15 @@ */ package org.apache.camel.component.flowable; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.Exchange; import org.apache.camel.component.mock.MockEndpoint; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/components/camel-google/camel-google-firestore/pom.xml b/components/camel-google/camel-google-firestore/pom.xml index a5ccb15b7fa87..0ec193fc10987 100644 --- a/components/camel-google/camel-google-firestore/pom.xml +++ b/components/camel-google/camel-google-firestore/pom.xml @@ -57,7 +57,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-google/camel-google-firestore/src/main/java/org/apache/camel/component/google/firestore/GoogleFirestoreProducer.java b/components/camel-google/camel-google-firestore/src/main/java/org/apache/camel/component/google/firestore/GoogleFirestoreProducer.java index 3032de741d78d..1237527f463ca 100644 --- a/components/camel-google/camel-google-firestore/src/main/java/org/apache/camel/component/google/firestore/GoogleFirestoreProducer.java +++ b/components/camel-google/camel-google-firestore/src/main/java/org/apache/camel/component/google/firestore/GoogleFirestoreProducer.java @@ -22,9 +22,6 @@ import java.util.Map; import java.util.concurrent.ExecutionException; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.core.ApiFuture; import com.google.cloud.firestore.CollectionReference; import com.google.cloud.firestore.DocumentReference; @@ -43,6 +40,9 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; /** * Producer for Google Firestore operations. @@ -358,7 +358,7 @@ private Map getDocumentData(Exchange exchange) throws InvalidPay try { return OBJECT_MAPPER.readValue(trimmed, new TypeReference>() { }); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new InvalidPayloadException(exchange, Map.class, exchange.getIn(), e); } } diff --git a/components/camel-google/camel-google-secret-manager/pom.xml b/components/camel-google/camel-google-secret-manager/pom.xml index 063e9a5cfa0b4..11294a019c576 100644 --- a/components/camel-google/camel-google-secret-manager/pom.xml +++ b/components/camel-google/camel-google-secret-manager/pom.xml @@ -78,7 +78,7 @@ ${google-auth-library-oauth2-http-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java index 82dc1e3c29060..f4fd78aed2546 100644 --- a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java +++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java @@ -20,9 +20,6 @@ import java.util.HashSet; import java.util.Set; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.gax.core.FixedCredentialsProvider; import com.google.api.gax.rpc.ApiException; import com.google.auth.Credentials; @@ -40,6 +37,9 @@ import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.StringHelper; import org.apache.camel.vault.GcpVaultConfiguration; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * A {@link PropertiesFunction} that lookup the property value from GCP Secrets Manager service. @@ -182,7 +182,7 @@ public String apply(String remainder) { if (key != null) { try { returnValue = getSecretFromSource(key, subkey, defaultValue, version); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeCamelException( "Error getting secret from vault using key: " + key + " due to: " + e.getMessage(), e); } @@ -193,7 +193,7 @@ public String apply(String remainder) { private String getSecretFromSource( String key, String subkey, String defaultValue, String version) - throws JsonProcessingException { + throws JacksonException { // capture name of secret secrets.add(key); diff --git a/components/camel-google/camel-google-sheets/pom.xml b/components/camel-google/camel-google-sheets/pom.xml index ec86087a9ce3f..e63b34e480869 100644 --- a/components/camel-google/camel-google-sheets/pom.xml +++ b/components/camel-google/camel-google-sheets/pom.xml @@ -134,6 +134,11 @@ + + tools.jackson.core + jackson-databind + + org.apache.camel diff --git a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java index 916490218882c..1d4ad094de959 100644 --- a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java +++ b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java @@ -17,7 +17,6 @@ package org.apache.camel.component.google.sheets.transform; -import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -26,7 +25,6 @@ import java.util.Objects; import java.util.Optional; -import com.fasterxml.jackson.core.JsonProcessingException; import com.google.api.services.sheets.v4.model.ValueRange; import org.apache.camel.CamelExecutionException; import org.apache.camel.InvalidPayloadException; @@ -39,6 +37,7 @@ import org.apache.camel.spi.Transformer; import org.apache.camel.support.MessageHelper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.JacksonException; /** * Data type supports generic JsonNode representation of Google Sheets row and column values. Transforms generic @@ -129,7 +128,7 @@ private ValueRange transformToValueRangeModel( message.setHeader(GoogleSheetsConstants.PROPERTY_PREFIX + "values", valueRange); return valueRange; - } catch (InvalidPayloadException | JsonProcessingException e) { + } catch (InvalidPayloadException | JacksonException e) { throw new CamelExecutionException( "Failed to apply Google Sheets Json struct data type on exchange", message.getExchange(), e); @@ -182,7 +181,7 @@ private List transformFromValueRangeModel( } } - } catch (IOException e) { + } catch (Exception e) { throw new CamelExecutionException( "Failed to apply Google Sheets Json struct data type on exchange", message.getExchange(), e); @@ -230,7 +229,7 @@ private String transformFromSplitValuesModel( } return Json.mapper().writer().writeValueAsString(model); - } catch (InvalidPayloadException | JsonProcessingException e) { + } catch (InvalidPayloadException | JacksonException e) { throw new CamelExecutionException( "Failed to apply Google Sheets Json struct data type on exchange", message.getExchange(), e); @@ -249,9 +248,9 @@ private static Optional getValueRangeBody(Message message) { String jsonBody = MessageHelper.extractBodyAsString(message); if (jsonBody != null) { try { - ValueRange valueRange = Json.mapper().reader().readValue(jsonBody, ValueRange.class); + ValueRange valueRange = Json.mapper().readValue(jsonBody, ValueRange.class); return valueRange.getValues() != null ? Optional.of(valueRange) : Optional.empty(); - } catch (IOException e) { + } catch (Exception e) { return Optional.empty(); } } @@ -263,7 +262,7 @@ private static Optional getValueRangeBody(Message message) { * Converts message body to list of Json objects. Supports different message body types such as List, String, * InputStream. */ - private static List bodyAsJsonBeans(Message message) throws JsonProcessingException, InvalidPayloadException { + private static List bodyAsJsonBeans(Message message) throws JacksonException, InvalidPayloadException { if (message.getBody() == null) { return Collections.emptyList(); } diff --git a/components/camel-google/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/stream/SheetsStreamConsumerIT.java b/components/camel-google/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/stream/SheetsStreamConsumerIT.java index 8941bb2066ba8..9e5195315d754 100644 --- a/components/camel-google/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/stream/SheetsStreamConsumerIT.java +++ b/components/camel-google/camel-google-sheets/src/test/java/org/apache/camel/component/google/sheets/stream/SheetsStreamConsumerIT.java @@ -20,10 +20,6 @@ import java.util.List; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import com.google.api.client.testing.http.MockLowLevelHttpResponse; import com.google.api.services.sheets.v4.model.Spreadsheet; import com.google.api.services.sheets.v4.model.ValueRange; @@ -34,6 +30,11 @@ import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import tools.jackson.core.StreamReadFeature; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.cfg.EnumFeature; +import tools.jackson.databind.json.JsonMapper; import static org.apache.camel.component.google.sheets.stream.GoogleSheetsStreamConstants.MAJOR_DIMENSION; import static org.apache.camel.component.google.sheets.stream.GoogleSheetsStreamConstants.RANGE; @@ -45,12 +46,13 @@ public class SheetsStreamConsumerIT { - private static final ObjectMapper MAPPER = new ObjectMapper() - .setDefaultPropertyInclusion( - JsonInclude.Value.construct(JsonInclude.Include.NON_EMPTY, JsonInclude.Include.NON_EMPTY)) + private static final ObjectMapper MAPPER = JsonMapper.builder() + .changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_EMPTY)) .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) - .enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING) - .enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING).disable(JsonParser.Feature.AUTO_CLOSE_SOURCE); + .enable(EnumFeature.READ_ENUMS_USING_TO_STRING) + .enable(EnumFeature.WRITE_ENUMS_USING_TO_STRING) + .disable(StreamReadFeature.AUTO_CLOSE_SOURCE) + .build(); private static final List> TEST_DATA = Arrays.asList( Arrays.asList("a1", "b1"), Arrays.asList("a2", "b2")); diff --git a/components/camel-google/camel-google-vertexai/src/main/java/org/apache/camel/component/google/vertexai/GoogleVertexAIProducer.java b/components/camel-google/camel-google-vertexai/src/main/java/org/apache/camel/component/google/vertexai/GoogleVertexAIProducer.java index 3bfb59ae94bcf..885e7db88771c 100644 --- a/components/camel-google/camel-google-vertexai/src/main/java/org/apache/camel/component/google/vertexai/GoogleVertexAIProducer.java +++ b/components/camel-google/camel-google-vertexai/src/main/java/org/apache/camel/component/google/vertexai/GoogleVertexAIProducer.java @@ -20,7 +20,6 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.HttpBody; import com.google.cloud.aiplatform.v1.PredictionServiceClient; import com.google.genai.Client; @@ -33,6 +32,7 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public class GoogleVertexAIProducer extends DefaultProducer { diff --git a/components/camel-graphql/pom.xml b/components/camel-graphql/pom.xml index 0170a0357cc6d..35a713f2e6cd1 100644 --- a/components/camel-graphql/pom.xml +++ b/components/camel-graphql/pom.xml @@ -76,7 +76,7 @@ test - com.fasterxml.jackson.core + tools.jackson.core jackson-databind test diff --git a/components/camel-graphql/src/test/java/org/apache/camel/component/graphql/GraphqlComponentTest.java b/components/camel-graphql/src/test/java/org/apache/camel/component/graphql/GraphqlComponentTest.java index 9ff8f35595559..9a2df2f912c56 100644 --- a/components/camel-graphql/src/test/java/org/apache/camel/component/graphql/GraphqlComponentTest.java +++ b/components/camel-graphql/src/test/java/org/apache/camel/component/graphql/GraphqlComponentTest.java @@ -19,7 +19,6 @@ import java.io.IOException; import java.net.URI; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.BindToRegistry; import org.apache.camel.EndpointInject; import org.apache.camel.builder.RouteBuilder; @@ -33,6 +32,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; diff --git a/components/camel-graphql/src/test/java/org/apache/camel/component/graphql/server/GraphqlServer.java b/components/camel-graphql/src/test/java/org/apache/camel/component/graphql/server/GraphqlServer.java index 65f71c622482d..16531196b5439 100644 --- a/components/camel-graphql/src/test/java/org/apache/camel/component/graphql/server/GraphqlServer.java +++ b/components/camel-graphql/src/test/java/org/apache/camel/component/graphql/server/GraphqlServer.java @@ -19,8 +19,6 @@ import java.io.IOException; import java.util.Map; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.GraphQL; @@ -35,6 +33,8 @@ import org.apache.hc.core5.http.io.entity.EntityUtils; import org.apache.hc.core5.http.io.entity.StringEntity; import org.apache.hc.core5.http.protocol.HttpContext; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; public class GraphqlServer { diff --git a/components/camel-groovy/src/test/java/org/apache/camel/groovy/xml/GroovyXmlDataFormatTest.java b/components/camel-groovy/src/test/java/org/apache/camel/groovy/xml/GroovyXmlDataFormatTest.java index f92189c5efa28..4931e0ccd7762 100644 --- a/components/camel-groovy/src/test/java/org/apache/camel/groovy/xml/GroovyXmlDataFormatTest.java +++ b/components/camel-groovy/src/test/java/org/apache/camel/groovy/xml/GroovyXmlDataFormatTest.java @@ -18,9 +18,6 @@ import org.w3c.dom.Document; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; import groovy.util.Node; import groovy.xml.XmlParser; import org.apache.camel.RoutesBuilder; @@ -31,6 +28,9 @@ import org.apache.camel.util.json.JsonObject; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class GroovyXmlDataFormatTest extends CamelTestSupport { diff --git a/components/camel-hashicorp-vault/pom.xml b/components/camel-hashicorp-vault/pom.xml index 7b293bb47465e..8ee2b9a0c2ef5 100644 --- a/components/camel-hashicorp-vault/pom.xml +++ b/components/camel-hashicorp-vault/pom.xml @@ -50,7 +50,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-huawei/camel-huaweicloud-dms/pom.xml b/components/camel-huawei/camel-huaweicloud-dms/pom.xml index d08b9fc68e04b..df4b7d073b4d0 100644 --- a/components/camel-huawei/camel-huaweicloud-dms/pom.xml +++ b/components/camel-huawei/camel-huaweicloud-dms/pom.xml @@ -56,6 +56,15 @@ ${huaweicloud-sdk-version} + + tools.jackson.core + jackson-core + + + tools.jackson.core + jackson-databind + + org.apache.camel diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSProducer.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSProducer.java index 507d39d24d9d9..751206745b0aa 100644 --- a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSProducer.java +++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSProducer.java @@ -18,8 +18,6 @@ import java.util.List; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.component.huaweicloud.dms.constants.DMSConstants; import org.apache.camel.component.huaweicloud.dms.constants.DMSOperations; @@ -39,6 +37,8 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public class DMSProducer extends DefaultProducer { private static final Logger LOG = LoggerFactory.getLogger(DMSProducer.class); @@ -96,9 +96,9 @@ public void process(Exchange exchange) throws Exception { * * @param exchange * @param clientConfigurations - * @throws JsonProcessingException + * @throws JacksonException */ - private void createInstance(Exchange exchange, ClientConfigurations clientConfigurations) throws JsonProcessingException { + private void createInstance(Exchange exchange, ClientConfigurations clientConfigurations) throws JacksonException { CreateInstanceRequestBody body = null; // checking if user inputted exchange body containing instance information. Body must be a CreateInstanceRequestBody or a valid JSON String (Advanced users) @@ -109,7 +109,7 @@ private void createInstance(Exchange exchange, ClientConfigurations clientConfig String strBody = (String) exchangeBody; try { body = mapper.readValue(strBody, CreateInstanceRequestBody.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { LOG.warn( "String request body must be a valid JSON representation of a CreateInstanceRequestBody. Attempting to create an instance from endpoint parameters"); } @@ -224,9 +224,9 @@ private void deleteInstance(Exchange exchange, ClientConfigurations clientConfig * * @param exchange * @param clientConfigurations - * @throws JsonProcessingException + * @throws JacksonException */ - private void listInstances(Exchange exchange, ClientConfigurations clientConfigurations) throws JsonProcessingException { + private void listInstances(Exchange exchange, ClientConfigurations clientConfigurations) throws JacksonException { ListInstancesRequest request = new ListInstancesRequest() .withEngine(clientConfigurations.getEngine()); ListInstancesResponse response = dmsClient.listInstances(request); @@ -238,9 +238,9 @@ private void listInstances(Exchange exchange, ClientConfigurations clientConfigu * * @param exchange * @param clientConfigurations - * @throws JsonProcessingException + * @throws JacksonException */ - private void queryInstance(Exchange exchange, ClientConfigurations clientConfigurations) throws JsonProcessingException { + private void queryInstance(Exchange exchange, ClientConfigurations clientConfigurations) throws JacksonException { // check for instance id, which is mandatory to query an instance if (ObjectHelper.isEmpty(clientConfigurations.getInstanceId())) { throw new IllegalArgumentException("Instance id is mandatory to query an instance"); @@ -257,9 +257,9 @@ private void queryInstance(Exchange exchange, ClientConfigurations clientConfigu * * @param exchange * @param clientConfigurations - * @throws JsonProcessingException + * @throws JacksonException */ - private void updateInstance(Exchange exchange, ClientConfigurations clientConfigurations) throws JsonProcessingException { + private void updateInstance(Exchange exchange, ClientConfigurations clientConfigurations) throws JacksonException { // check for instance id, which is mandatory to update an instance if (ObjectHelper.isEmpty(clientConfigurations.getInstanceId())) { throw new IllegalArgumentException("Instance id is mandatory to update an instance"); diff --git a/components/camel-huawei/camel-huaweicloud-frs/pom.xml b/components/camel-huawei/camel-huaweicloud-frs/pom.xml index 243dd0e708ce9..d5c4df2657f8a 100644 --- a/components/camel-huawei/camel-huaweicloud-frs/pom.xml +++ b/components/camel-huawei/camel-huaweicloud-frs/pom.xml @@ -59,7 +59,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/pom.xml b/components/camel-huawei/camel-huaweicloud-functiongraph/pom.xml index caaad46a7df6d..5b7ea09aef6ae 100644 --- a/components/camel-huawei/camel-huaweicloud-functiongraph/pom.xml +++ b/components/camel-huawei/camel-huaweicloud-functiongraph/pom.xml @@ -46,6 +46,16 @@ ${project.version} + + tools.jackson.core + jackson-core + + + tools.jackson.core + jackson-databind + + + com.huaweicloud.sdk diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/FunctionGraphProducer.java b/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/FunctionGraphProducer.java index 3d09bb1ef80e6..50b385a9987a8 100644 --- a/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/FunctionGraphProducer.java +++ b/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/FunctionGraphProducer.java @@ -19,8 +19,6 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.huaweicloud.sdk.functiongraph.v2.FunctionGraphClient; import com.huaweicloud.sdk.functiongraph.v2.model.InvokeFunctionRequest; import com.huaweicloud.sdk.functiongraph.v2.model.InvokeFunctionResponse; @@ -32,6 +30,8 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public class FunctionGraphProducer extends DefaultProducer { private static final Logger LOG = LoggerFactory.getLogger(FunctionGraphProducer.class); @@ -81,7 +81,7 @@ private void invokeFunction(Exchange exchange, ClientConfigurations clientConfig String strBody = exchange.getMessage().getBody(String.class); try { request = new ObjectMapper().readValue(strBody, HashMap.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalArgumentException("Request body must be a JSON or a HashMap"); } } else { diff --git a/components/camel-huawei/camel-huaweicloud-iam/pom.xml b/components/camel-huawei/camel-huaweicloud-iam/pom.xml index 433f9ebe765a6..a118c5b7bec1c 100644 --- a/components/camel-huawei/camel-huaweicloud-iam/pom.xml +++ b/components/camel-huawei/camel-huaweicloud-iam/pom.xml @@ -46,6 +46,15 @@ ${project.version} + + tools.jackson.core + jackson-core + + + tools.jackson.core + jackson-databind + + com.huaweicloud.sdk diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/IAMProducer.java b/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/IAMProducer.java index 4500dd105f4ea..7b1f69c0c8eea 100644 --- a/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/IAMProducer.java +++ b/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/IAMProducer.java @@ -16,8 +16,6 @@ */ package org.apache.camel.component.huaweicloud.iam; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.huaweicloud.sdk.iam.v3.IamClient; import com.huaweicloud.sdk.iam.v3.model.KeystoneListGroupsRequest; @@ -44,6 +42,8 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public class IAMProducer extends DefaultProducer { private static final Logger LOG = LoggerFactory.getLogger(IAMProducer.class); @@ -149,7 +149,7 @@ private void updateUser(Exchange exchange, ClientConfigurations clientConfigurat String strBody = (String) body; try { userOption = new ObjectMapper().readValue(strBody, UpdateUserOption.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalArgumentException("String request body must be a valid JSON"); } } else { @@ -225,7 +225,7 @@ private void updateGroup(Exchange exchange, ClientConfigurations clientConfigura String strBody = (String) body; try { groupOption = new ObjectMapper().readValue(strBody, KeystoneUpdateGroupOption.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new IllegalArgumentException("String request body must be a valid JSON with the proper keys"); } } else { diff --git a/components/camel-huawei/camel-huaweicloud-imagerecognition/pom.xml b/components/camel-huawei/camel-huaweicloud-imagerecognition/pom.xml index 9e901ea3333fe..a52a1c1bd110d 100644 --- a/components/camel-huawei/camel-huaweicloud-imagerecognition/pom.xml +++ b/components/camel-huawei/camel-huaweicloud-imagerecognition/pom.xml @@ -60,7 +60,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core diff --git a/components/camel-huawei/camel-huaweicloud-obs/pom.xml b/components/camel-huawei/camel-huaweicloud-obs/pom.xml index 43f2076a57ade..dc41c4ec34053 100644 --- a/components/camel-huawei/camel-huaweicloud-obs/pom.xml +++ b/components/camel-huawei/camel-huaweicloud-obs/pom.xml @@ -46,6 +46,15 @@ ${project.version} + + tools.jackson.core + jackson-core + + + tools.jackson.core + jackson-databind + + com.huaweicloud diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/OBSProducer.java b/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/OBSProducer.java index 575ccb7999c49..935f862d7d337 100644 --- a/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/OBSProducer.java +++ b/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/OBSProducer.java @@ -22,8 +22,6 @@ import java.util.ArrayList; import java.util.List; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; @@ -49,6 +47,8 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public class OBSProducer extends DefaultProducer { private static final Logger LOG = LoggerFactory.getLogger(OBSProducer.class); @@ -227,7 +227,7 @@ private void createBucket(Exchange exchange, ClientConfigurations clientConfigur String strBody = (String) exchangeBody; try { request = new ObjectMapper().readValue(strBody, CreateBucketRequest.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { LOG.warn( "String request body must be a valid JSON representation of a CreateBucketRequest. Attempting to create a bucket from endpoint parameters"); } @@ -333,7 +333,7 @@ private void listObjects(Exchange exchange, ClientConfigurations clientConfigura String strBody = (String) exchangeBody; try { request = new ObjectMapper().readValue(strBody, ListObjectsRequest.class); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { LOG.warn( "String request body must be a valid JSON representation of a ListObjectsRequest. Attempting to list objects from endpoint parameters"); } diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsMaxTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsMaxTest.java index 3c846490904af..82ee9673d9bb0 100644 --- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsMaxTest.java +++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsMaxTest.java @@ -19,8 +19,6 @@ import java.util.ArrayList; import java.util.List; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import com.obs.services.ObsClient; import com.obs.services.model.ListObjectsRequest; import com.obs.services.model.ObjectListing; @@ -33,6 +31,8 @@ import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; import org.mockito.Mockito; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/PutObjectStringTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/PutObjectStringTest.java index fad272c8e4ef6..d7d5f9752f936 100644 --- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/PutObjectStringTest.java +++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/PutObjectStringTest.java @@ -18,7 +18,6 @@ import java.io.InputStream; -import com.fasterxml.jackson.databind.ObjectMapper; import com.obs.services.ObsClient; import com.obs.services.model.PutObjectResult; import com.obs.services.model.StorageClassEnum; @@ -33,6 +32,7 @@ import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/PutObjectTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/PutObjectTest.java index c59d4d95244e6..f7914ade43365 100644 --- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/PutObjectTest.java +++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/PutObjectTest.java @@ -18,7 +18,6 @@ import java.io.File; -import com.fasterxml.jackson.databind.ObjectMapper; import com.obs.services.ObsClient; import com.obs.services.model.PutObjectResult; import com.obs.services.model.StorageClassEnum; @@ -33,6 +32,7 @@ import org.mockito.Mockito; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/components/camel-huawei/camel-huaweicloud-smn/pom.xml b/components/camel-huawei/camel-huaweicloud-smn/pom.xml index a54493723ff55..0a666b1337a08 100644 --- a/components/camel-huawei/camel-huaweicloud-smn/pom.xml +++ b/components/camel-huawei/camel-huaweicloud-smn/pom.xml @@ -46,7 +46,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core diff --git a/components/camel-ibm/camel-ibm-secrets-manager/pom.xml b/components/camel-ibm/camel-ibm-secrets-manager/pom.xml index b554b193acef0..929384c13f6c9 100644 --- a/components/camel-ibm/camel-ibm-secrets-manager/pom.xml +++ b/components/camel-ibm/camel-ibm-secrets-manager/pom.xml @@ -57,7 +57,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-ibm/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/vault/IBMEventStreamReloadTriggerTask.java b/components/camel-ibm/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/vault/IBMEventStreamReloadTriggerTask.java index fde6214e6e254..c0fdc9f752fbd 100644 --- a/components/camel-ibm/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/vault/IBMEventStreamReloadTriggerTask.java +++ b/components/camel-ibm/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/vault/IBMEventStreamReloadTriggerTask.java @@ -25,10 +25,6 @@ import java.util.Map; import java.util.Set; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; @@ -50,6 +46,10 @@ import org.apache.kafka.common.serialization.StringDeserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ArrayNode; /** * Period task which checks if IBM secrets has been updated and can trigger Camel to be reloaded. @@ -183,7 +183,7 @@ public void run() { String secretType; try { recordJson = mapper.readTree(record.value()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } JsonNode payload = recordJson.get("data"); diff --git a/components/camel-jackson-avro/pom.xml b/components/camel-jackson-avro/pom.xml index f2878d24b5c44..8c62a576ed55a 100644 --- a/components/camel-jackson-avro/pom.xml +++ b/components/camel-jackson-avro/pom.xml @@ -35,6 +35,18 @@ 3.10.0 + + + + com.fasterxml.jackson + jackson-bom + ${jackson2-version} + pom + import + + + + diff --git a/components/camel-jackson-protobuf/pom.xml b/components/camel-jackson-protobuf/pom.xml index 626ffa8887f6c..5f86b62b1b619 100644 --- a/components/camel-jackson-protobuf/pom.xml +++ b/components/camel-jackson-protobuf/pom.xml @@ -35,6 +35,18 @@ 3.10.0 + + + + com.fasterxml.jackson + jackson-bom + ${jackson2-version} + pom + import + + + + diff --git a/components/camel-jackson/pom.xml b/components/camel-jackson/pom.xml index 1b9c381d2e613..0cd7cc5f8c589 100644 --- a/components/camel-jackson/pom.xml +++ b/components/camel-jackson/pom.xml @@ -35,6 +35,18 @@ + + + + com.fasterxml.jackson + jackson-bom + ${jackson2-version} + pom + import + + + + diff --git a/components/camel-jacksonxml/pom.xml b/components/camel-jacksonxml/pom.xml index 62d8c12615fd7..0e2cadc8ad44a 100644 --- a/components/camel-jacksonxml/pom.xml +++ b/components/camel-jacksonxml/pom.xml @@ -34,6 +34,18 @@ + + + + com.fasterxml.jackson + jackson-bom + ${jackson2-version} + pom + import + + + + diff --git a/components/camel-jolt/pom.xml b/components/camel-jolt/pom.xml index da065b66e4359..07d05fbd7b353 100644 --- a/components/camel-jolt/pom.xml +++ b/components/camel-jolt/pom.xml @@ -46,7 +46,7 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-jq/pom.xml b/components/camel-jq/pom.xml index b735825dddea5..d2641b5c7a9dd 100644 --- a/components/camel-jq/pom.xml +++ b/components/camel-jq/pom.xml @@ -41,10 +41,12 @@ org.apache.camel camel-support + net.thisptr jackson-jq @@ -55,6 +57,11 @@ jackson-jq-extra ${jackson-jq-version} + + tools.jackson.core + jackson-databind + + diff --git a/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqExpression.java b/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqExpression.java index 4250ba9bd4e7d..9a75d0dfed497 100644 --- a/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqExpression.java +++ b/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqExpression.java @@ -21,8 +21,6 @@ import java.util.List; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.BooleanNode; import net.thisptr.jackson.jq.JsonQuery; import net.thisptr.jackson.jq.Scope; import net.thisptr.jackson.jq.Versions; @@ -38,6 +36,8 @@ import org.apache.camel.support.ExpressionAdapter; import org.apache.camel.support.MessageHelper; import org.apache.camel.support.builder.ExpressionBuilder; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.BooleanNode; public class JqExpression extends ExpressionAdapter implements ExpressionResultTypeAware { diff --git a/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqFunctions.java b/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqFunctions.java index 1022447b13674..63d872ee1566b 100644 --- a/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqFunctions.java +++ b/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqFunctions.java @@ -19,9 +19,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.NullNode; -import com.fasterxml.jackson.databind.node.TextNode; import net.thisptr.jackson.jq.BuiltinFunctionLoader; import net.thisptr.jackson.jq.Expression; import net.thisptr.jackson.jq.Function; @@ -37,6 +34,9 @@ import org.apache.camel.StreamCache; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.NullNode; +import tools.jackson.databind.node.TextNode; public final class JqFunctions { diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/JqLanguageTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/JqLanguageTest.java index 682fe430b78e7..b492dc457163d 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/JqLanguageTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/JqLanguageTest.java @@ -16,13 +16,13 @@ */ package org.apache.camel.language; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.node.TextNode; import org.apache.camel.CamelContext; import org.apache.camel.builder.LanguageBuilderFactory; import org.apache.camel.component.jackson.JacksonConstants; import org.apache.camel.model.language.JqExpression; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; +import tools.jackson.databind.node.TextNode; /** * Ensures that the "jq" language is compliant with the single input / typed language expectations. diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqCustomScopeTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqCustomScopeTest.java index 388b0c42972df..9fd76fe5b3f05 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqCustomScopeTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqCustomScopeTest.java @@ -18,8 +18,6 @@ import java.util.List; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.BooleanNode; import net.thisptr.jackson.jq.Expression; import net.thisptr.jackson.jq.Function; import net.thisptr.jackson.jq.PathOutput; @@ -31,6 +29,8 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.BooleanNode; public class JqCustomScopeTest extends JqTestSupport { diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionBodyFnTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionBodyFnTest.java index 000439234ad13..0480f3cdad45d 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionBodyFnTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionBodyFnTest.java @@ -16,13 +16,13 @@ */ package org.apache.camel.language.jq; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; public class JqExpressionBodyFnTest extends JqTestSupport { @Override diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderAsStringTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderAsStringTest.java index 61cab5288107f..d44801bd3e384 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderAsStringTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderAsStringTest.java @@ -16,10 +16,10 @@ */ package org.apache.camel.language.jq; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; +import tools.jackson.databind.node.ObjectNode; public class JqExpressionFromHeaderAsStringTest extends JqTestSupport { @Override diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java index 35e613f28376e..4e8fd195a3d75 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java @@ -16,11 +16,11 @@ */ package org.apache.camel.language.jq; -import com.fasterxml.jackson.databind.node.TextNode; import org.apache.camel.NoSuchHeaderException; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; +import tools.jackson.databind.node.TextNode; public class JqExpressionFromHeaderTest extends JqTestSupport { @Override diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java index aef6c16064c91..d1fa0b90891ce 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java @@ -16,12 +16,12 @@ */ package org.apache.camel.language.jq; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.node.TextNode; import org.apache.camel.NoSuchPropertyException; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; +import tools.jackson.databind.node.ObjectNode; +import tools.jackson.databind.node.TextNode; public class JqExpressionFromPropertyTest extends JqTestSupport { @Override diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionPojoTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionPojoTest.java index 7180913519234..a8b0422e1fd2e 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionPojoTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionPojoTest.java @@ -18,12 +18,12 @@ import java.util.Objects; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jackson.JacksonConstants; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; +import tools.jackson.databind.node.ObjectNode; public class JqExpressionPojoTest extends JqTestSupport { diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionSimpleTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionSimpleTest.java index e516110f6a8d3..33ea5aa2134ca 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionSimpleTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionSimpleTest.java @@ -16,10 +16,10 @@ */ package org.apache.camel.language.jq; -import com.fasterxml.jackson.databind.node.TextNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; +import tools.jackson.databind.node.TextNode; public class JqExpressionSimpleTest extends JqTestSupport { @Override diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionTest.java index f35f446273f1b..994dac02227f7 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionTest.java @@ -18,16 +18,16 @@ import java.util.List; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import net.thisptr.jackson.jq.Scope; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.support.DefaultExchange; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; import static net.javacrumbs.jsonunit.assertj.JsonAssertions.assertThatJson; import static org.assertj.core.api.Assertions.assertThat; diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqTestSupport.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqTestSupport.java index 2eecaf6d99312..ee08b0abe92a5 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqTestSupport.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqTestSupport.java @@ -16,9 +16,9 @@ */ package org.apache.camel.language.jq; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.test.junit6.CamelTestSupport; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; public abstract class JqTestSupport extends CamelTestSupport { public static final ObjectMapper MAPPER = new ObjectMapper(); diff --git a/components/camel-jslt/pom.xml b/components/camel-jslt/pom.xml index e3a7860cc5a6c..f500cb3190951 100644 --- a/components/camel-jslt/pom.xml +++ b/components/camel-jslt/pom.xml @@ -47,7 +47,7 @@ ${jslt-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-jslt/src/generated/java/org/apache/camel/component/jslt/JsltEndpointConfigurer.java b/components/camel-jslt/src/generated/java/org/apache/camel/component/jslt/JsltEndpointConfigurer.java index 35534de963d0c..03f2e7af3088d 100644 --- a/components/camel-jslt/src/generated/java/org/apache/camel/component/jslt/JsltEndpointConfigurer.java +++ b/components/camel-jslt/src/generated/java/org/apache/camel/component/jslt/JsltEndpointConfigurer.java @@ -34,7 +34,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "mapbigdecimalasfloats": case "mapBigDecimalAsFloats": target.setMapBigDecimalAsFloats(property(camelContext, boolean.class, value)); return true; case "objectmapper": - case "objectMapper": target.setObjectMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; + case "objectMapper": target.setObjectMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; case "prettyprint": case "prettyPrint": target.setPrettyPrint(property(camelContext, boolean.class, value)); return true; default: return false; @@ -55,7 +55,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "mapbigdecimalasfloats": case "mapBigDecimalAsFloats": return boolean.class; case "objectmapper": - case "objectMapper": return com.fasterxml.jackson.databind.ObjectMapper.class; + case "objectMapper": return tools.jackson.databind.ObjectMapper.class; case "prettyprint": case "prettyPrint": return boolean.class; default: return null; diff --git a/components/camel-jslt/src/generated/resources/META-INF/org/apache/camel/component/jslt/jslt.json b/components/camel-jslt/src/generated/resources/META-INF/org/apache/camel/component/jslt/jslt.json index c198558434599..180601a80f1a9 100644 --- a/components/camel-jslt/src/generated/resources/META-INF/org/apache/camel/component/jslt/jslt.json +++ b/components/camel-jslt/src/generated/resources/META-INF/org/apache/camel/component/jslt/jslt.json @@ -41,7 +41,7 @@ "allowTemplateFromHeader": { "index": 2, "kind": "parameter", "displayName": "Allow Template From Header", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to allow to use resource template from header or not (default false). Enabling this allows to specify dynamic templates via message header. However this can be seen as a potential security vulnerability if the header is coming from a malicious user, so use this with care." }, "contentCache": { "index": 3, "kind": "parameter", "displayName": "Content Cache", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Sets whether to use resource content cache or not" }, "mapBigDecimalAsFloats": { "index": 4, "kind": "parameter", "displayName": "Map Big Decimal As Floats", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If true, the mapper will use the USE_BIG_DECIMAL_FOR_FLOATS in serialization features" }, - "objectMapper": { "index": 5, "kind": "parameter", "displayName": "Object Mapper", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "description": "Setting a custom JSON Object Mapper to be used" }, + "objectMapper": { "index": 5, "kind": "parameter", "displayName": "Object Mapper", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "description": "Setting a custom JSON Object Mapper to be used" }, "prettyPrint": { "index": 6, "kind": "parameter", "displayName": "Pretty Print", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If true, JSON in output message is pretty printed." }, "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." } } diff --git a/components/camel-jslt/src/main/java/org/apache/camel/component/jslt/JsltEndpoint.java b/components/camel-jslt/src/main/java/org/apache/camel/component/jslt/JsltEndpoint.java index 3ca8c381dcc5b..79d0b594b3038 100644 --- a/components/camel-jslt/src/main/java/org/apache/camel/component/jslt/JsltEndpoint.java +++ b/components/camel-jslt/src/main/java/org/apache/camel/component/jslt/JsltEndpoint.java @@ -21,7 +21,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; -import java.io.Serializable; import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Collections; @@ -29,15 +28,6 @@ import java.util.Map; import java.util.Objects; -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.schibsted.spt.data.jslt.Expression; import com.schibsted.spt.data.jslt.Function; import com.schibsted.spt.data.jslt.JsltException; @@ -57,6 +47,11 @@ import org.apache.camel.support.ResourceHelper; import org.apache.camel.util.IOHelper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.node.ObjectNode; /** * Query or transform JSON payloads using JSLT. @@ -69,9 +64,7 @@ public class JsltEndpoint extends ResourceEndpoint { private static final JsonFilter DEFAULT_JSON_FILTER = new DefaultJsonFilter(); static { - OBJECT_MAPPER = new ObjectMapper(); - OBJECT_MAPPER.setSerializerFactory(OBJECT_MAPPER.getSerializerFactory().withSerializerModifier( - new SafeTypesOnlySerializerModifier())); + OBJECT_MAPPER = JsonMapper.builder().addModule(new JsltJacksonModule()).build(); } private Expression transform; @@ -211,7 +204,7 @@ protected void onExchange(Exchange exchange) throws Exception { objectMapper = getObjectMapper(); } if (isMapBigDecimalAsFloats()) { - objectMapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); + objectMapper = objectMapper.rebuild().enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS).build(); } Object body = exchange.getIn().getBody(); @@ -325,31 +318,4 @@ public void setObjectMapper(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } - private static class SafeTypesOnlySerializerModifier extends BeanSerializerModifier { - // Serialize only safe types: primitives, records, serializable objects and - // collections/maps/arrays of them. To avoid serializing something like Response object. - // Types that are not safe are serialized as their toString() value. - @Override - public JsonSerializer modifySerializer( - SerializationConfig config, BeanDescription beanDesc, - JsonSerializer serializer) { - final Class beanClass = beanDesc.getBeanClass(); - - if (Collection.class.isAssignableFrom(beanClass) - || Map.class.isAssignableFrom(beanClass) - || beanClass.isArray() - || beanClass.isPrimitive() - || isRecord(beanClass) - || Serializable.class.isAssignableFrom(beanClass)) { - return serializer; - } - - return ToStringSerializer.instance; - } - - private static boolean isRecord(Class clazz) { - // This is available since Java 16. - return clazz.isRecord(); - } - } } diff --git a/components/camel-jslt/src/test/java/org/apache/camel/component/jslt/JsltBigDecimalCustomObjectMapperTest.java b/components/camel-jslt/src/test/java/org/apache/camel/component/jslt/JsltBigDecimalCustomObjectMapperTest.java index 5e86f59893d87..a8203a54a3cd3 100644 --- a/components/camel-jslt/src/test/java/org/apache/camel/component/jslt/JsltBigDecimalCustomObjectMapperTest.java +++ b/components/camel-jslt/src/test/java/org/apache/camel/component/jslt/JsltBigDecimalCustomObjectMapperTest.java @@ -16,8 +16,6 @@ */ package org.apache.camel.component.jslt; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; import com.schibsted.spt.data.jslt.Expression; import com.schibsted.spt.data.jslt.Parser; import com.schibsted.spt.data.jslt.filters.JsltJsonFilter; @@ -30,11 +28,14 @@ import org.apache.camel.test.junit6.CamelTestSupport; import org.apache.camel.util.IOHelper; import org.junit.jupiter.api.Test; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class JsltBigDecimalCustomObjectMapperTest extends CamelTestSupport { @BindToRegistry("customMapper") - ObjectMapper mapper = new ObjectMapper().enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); + ObjectMapper mapper = JsonMapper.builder().enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS).build(); @Override protected CamelContext createCamelContext() throws Exception { diff --git a/components/camel-json-patch/src/main/java/org/apache/camel/component/jsonpatch/JsonPatchProducer.java b/components/camel-json-patch/src/main/java/org/apache/camel/component/jsonpatch/JsonPatchProducer.java index 618d854341737..3526cb60796e4 100644 --- a/components/camel-json-patch/src/main/java/org/apache/camel/component/jsonpatch/JsonPatchProducer.java +++ b/components/camel-json-patch/src/main/java/org/apache/camel/component/jsonpatch/JsonPatchProducer.java @@ -16,8 +16,8 @@ */ package org.apache.camel.component.jsonpatch; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import com.github.fge.jsonpatch.JsonPatch; import org.apache.camel.Exchange; import org.apache.camel.support.DefaultProducer; diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonUriSchemaLoader.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonUriSchemaLoader.java index 3a5ea02e8dad3..9f2f8ae2c81c0 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonUriSchemaLoader.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonUriSchemaLoader.java @@ -19,8 +19,6 @@ import java.io.*; import java.net.*; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.networknt.schema.JsonSchema; import com.networknt.schema.JsonSchemaException; import com.networknt.schema.JsonSchemaFactory; @@ -29,6 +27,8 @@ import com.networknt.schema.SpecVersionDetector; import org.apache.camel.CamelContext; import org.apache.camel.support.ResourceHelper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class DefaultJsonUriSchemaLoader implements JsonUriSchemaLoader { diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorComponent.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorComponent.java index 687ed5bfe717f..dd8c5887fe419 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorComponent.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorComponent.java @@ -18,12 +18,12 @@ import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Endpoint; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.annotations.Component; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.DefaultComponent; +import tools.jackson.databind.ObjectMapper; /** * The JSON Schema Validator Component is for validating JSON against a schema. diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpoint.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpoint.java index 9c921cedefbda..8adadc801306d 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpoint.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpoint.java @@ -19,9 +19,6 @@ import java.io.InputStream; import java.util.Set; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.networknt.schema.JsonSchema; import com.networknt.schema.ValidationMessage; import org.apache.camel.Category; @@ -34,6 +31,9 @@ import org.apache.camel.component.ResourceEndpoint; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Validate JSON payloads using NetworkNT JSON Schema. diff --git a/components/camel-jsonata/pom.xml b/components/camel-jsonata/pom.xml index c8e81aebe0703..a7d9e150f5768 100644 --- a/components/camel-jsonata/pom.xml +++ b/components/camel-jsonata/pom.xml @@ -46,7 +46,7 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-jsonata/src/main/java/org/apache/camel/component/jsonata/JsonataEndpoint.java b/components/camel-jsonata/src/main/java/org/apache/camel/component/jsonata/JsonataEndpoint.java index 03e05b49a693f..67234cd72dd29 100644 --- a/components/camel-jsonata/src/main/java/org/apache/camel/component/jsonata/JsonataEndpoint.java +++ b/components/camel-jsonata/src/main/java/org/apache/camel/component/jsonata/JsonataEndpoint.java @@ -24,7 +24,6 @@ import java.util.stream.Collectors; import com.dashjoin.jsonata.Jsonata; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Category; import org.apache.camel.Exchange; import org.apache.camel.ExchangePattern; @@ -34,6 +33,7 @@ import org.apache.camel.support.ExchangeHelper; import org.apache.camel.support.ResourceHelper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.databind.ObjectMapper; import static com.dashjoin.jsonata.Jsonata.jsonata; diff --git a/components/camel-jsonata/src/test/java/org/apache/camel/component/jsonata/JsonataArrayInputTest.java b/components/camel-jsonata/src/test/java/org/apache/camel/component/jsonata/JsonataArrayInputTest.java index 6b3d357b06e60..24ace8c6577b0 100644 --- a/components/camel-jsonata/src/test/java/org/apache/camel/component/jsonata/JsonataArrayInputTest.java +++ b/components/camel-jsonata/src/test/java/org/apache/camel/component/jsonata/JsonataArrayInputTest.java @@ -20,8 +20,6 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Processor; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; @@ -29,6 +27,8 @@ import org.apache.camel.test.junit6.CamelTestSupport; import org.apache.camel.util.IOHelper; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; class JsonataArrayInputTest extends CamelTestSupport { diff --git a/components/camel-jsonpath/pom.xml b/components/camel-jsonpath/pom.xml index 0e3a5be25271a..a904ccf8de2c4 100644 --- a/components/camel-jsonpath/pom.xml +++ b/components/camel-jsonpath/pom.xml @@ -57,11 +57,11 @@ ${json-path-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - com.fasterxml.jackson.module + tools.jackson.module jackson-module-jakarta-xmlbind-annotations true diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java index 603ef1192320f..e566bc6746bc5 100644 --- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java +++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java @@ -27,7 +27,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.fasterxml.jackson.databind.ObjectMapper; import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Option; @@ -42,6 +41,7 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; import static com.jayway.jsonpath.Option.ALWAYS_RETURN_LIST; import static com.jayway.jsonpath.Option.DEFAULT_PATH_LEAF_TO_NULL; diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java index cee4cff2d430f..481e26be98159 100644 --- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java +++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/jackson/JacksonJsonAdapter.java @@ -19,12 +19,13 @@ import java.util.Map; import java.util.Set; -import com.fasterxml.jackson.databind.Module; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.jsonpath.JsonPathAdapter; import org.apache.camel.spi.Registry; +import tools.jackson.databind.JacksonModule; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; /** * A Jackson {@link JsonPathAdapter} which is using Jackson to convert the message body to {@link Map}. This allows us @@ -32,12 +33,12 @@ */ public class JacksonJsonAdapter implements JsonPathAdapter { - private static final String JACKSON_JAXB_MODULE = "com.fasterxml.jackson.module.jaxb.JaxbAnnotationModule"; + private static final String JACKSON_JAXB_MODULE = "tools.jackson.module.jaxb.JaxbAnnotationModule"; - private final ObjectMapper defaultMapper; + private ObjectMapper defaultMapper; public JacksonJsonAdapter() { - defaultMapper = new ObjectMapper(); + defaultMapper = JsonMapper.builder().build(); } @Override @@ -48,8 +49,8 @@ public void init(CamelContext camelContext) { if (clazz != null) { Object obj = camelContext.getInjector().newInstance(clazz); if (obj instanceof Module) { - Module module = (Module) obj; - defaultMapper.registerModule(module); + JacksonModule module = (JacksonModule) obj; + defaultMapper = defaultMapper.rebuild().addModule(module).build(); } } } diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/CustomObjectMapper.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/CustomObjectMapper.java index 77dc1339bca57..fa053ad6f3b12 100644 --- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/CustomObjectMapper.java +++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/CustomObjectMapper.java @@ -16,8 +16,8 @@ */ package org.apache.camel.jsonpath; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; public class CustomObjectMapper extends ObjectMapper { diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCustomMapperTest.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCustomMapperTest.java index 86353c67e31f9..bfa6f924ee82d 100644 --- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCustomMapperTest.java +++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCustomMapperTest.java @@ -20,17 +20,17 @@ import java.io.IOException; import java.util.Locale; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.Module; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.module.SimpleModule; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.spi.Registry; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.JsonSerializer; +import tools.jackson.databind.Module; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.module.SimpleModule; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/components/camel-kafka/pom.xml b/components/camel-kafka/pom.xml index 86cb27a63019a..58e6afcb84d13 100644 --- a/components/camel-kafka/pom.xml +++ b/components/camel-kafka/pom.xml @@ -62,7 +62,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/DropField.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/DropField.java index 5f5f279df0381..95d0e9a5bf4a0 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/DropField.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/DropField.java @@ -16,12 +16,12 @@ */ package org.apache.camel.component.kafka.transform; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.JsonNodeType; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.Exchange; import org.apache.camel.InvalidPayloadException; import org.apache.camel.Processor; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.JsonNodeType; +import tools.jackson.databind.node.ObjectNode; public class DropField implements Processor { diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ExtractField.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ExtractField.java index 430c258803151..9bb2ce6c1c0d1 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ExtractField.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ExtractField.java @@ -18,12 +18,12 @@ import java.util.Map; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.InvalidPayloadException; import org.apache.camel.Processor; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class ExtractField implements Processor { diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/HoistField.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/HoistField.java index 4f9d681bfaee7..c1ec7bd2393a1 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/HoistField.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/HoistField.java @@ -19,11 +19,11 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.ExchangeProperty; import org.apache.camel.InvalidPayloadException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class HoistField { diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/InsertField.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/InsertField.java index 89e56b6d44eb7..90e0f7b9f853b 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/InsertField.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/InsertField.java @@ -16,13 +16,13 @@ */ package org.apache.camel.component.kafka.transform; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.Exchange; import org.apache.camel.InvalidPayloadException; import org.apache.camel.Processor; import org.apache.camel.support.LanguageSupport; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; public class InsertField implements Processor { diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/MaskField.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/MaskField.java index e40f44adf2a85..fa54651ed05db 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/MaskField.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/MaskField.java @@ -22,13 +22,13 @@ import java.util.function.Function; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.ExchangeProperty; import org.apache.camel.InvalidPayloadException; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class MaskField { diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/MessageTimestampRouter.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/MessageTimestampRouter.java index 0ad6718b1183a..fb9398649eccf 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/MessageTimestampRouter.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/MessageTimestampRouter.java @@ -23,12 +23,12 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.ExchangeProperty; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class MessageTimestampRouter { diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ReplaceField.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ReplaceField.java index 1d225f17e0bae..b6f17c759660e 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ReplaceField.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ReplaceField.java @@ -19,13 +19,13 @@ import java.util.*; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.ExchangeProperty; import org.apache.camel.InvalidPayloadException; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class ReplaceField { diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ValueToKey.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ValueToKey.java index 9adf1067c1a8e..c2e0e24dea635 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ValueToKey.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/transform/ValueToKey.java @@ -19,13 +19,13 @@ import java.util.*; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.ExchangeProperty; import org.apache.camel.InvalidPayloadException; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public class ValueToKey { diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/serde/DefaultKafkaHeaderSerializerTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/serde/DefaultKafkaHeaderSerializerTest.java index a897e7a4ddfbc..68e7bc0656197 100644 --- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/serde/DefaultKafkaHeaderSerializerTest.java +++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/serde/DefaultKafkaHeaderSerializerTest.java @@ -19,10 +19,10 @@ import java.util.Arrays; import java.util.Collection; -import com.fasterxml.jackson.databind.node.TextNode; import org.apache.camel.impl.DefaultCamelContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; +import tools.jackson.databind.node.StringNode; import static org.junit.jupiter.api.Assertions.assertArrayEquals; @@ -47,7 +47,7 @@ public static Collection primeNumbers() { { 22.0D, new byte[] { 64, 54, 0, 0, 0, 0, 0, 0 } }, // double { "someValue", "someValue".getBytes() }, // string { new byte[] { 0, 2, -43 }, new byte[] { 0, 2, -43 } }, // byte[] - { new TextNode("foo"), "foo".getBytes() }, // jackson TextNode + { new StringNode("foo"), "foo".getBytes() }, // jackson TextNode { null, null }, // null { new Object(), null } // unknown // type diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/HoistFieldTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/HoistFieldTest.java index f84337bfbe988..85870eb1f6860 100644 --- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/HoistFieldTest.java +++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/HoistFieldTest.java @@ -16,14 +16,14 @@ */ package org.apache.camel.component.kafka.transform; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.support.DefaultExchange; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; class HoistFieldTest { diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/InsertFieldTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/InsertFieldTest.java index c2e1cb65c5116..7e103c96f4f5f 100644 --- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/InsertFieldTest.java +++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/InsertFieldTest.java @@ -16,13 +16,13 @@ */ package org.apache.camel.component.kafka.transform; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.support.DefaultExchange; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; class InsertFieldTest { diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/MaskFieldTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/MaskFieldTest.java index 9dbb7933b826c..f0404ce941cd9 100644 --- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/MaskFieldTest.java +++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/MaskFieldTest.java @@ -21,14 +21,14 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.support.DefaultExchange; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; class MaskFieldTest { diff --git a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/ReplaceFieldTest.java b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/ReplaceFieldTest.java index b42aceafd99d1..a7e8c7c78b4a4 100644 --- a/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/ReplaceFieldTest.java +++ b/components/camel-kafka/src/test/java/org/apache/camel/component/kafka/transform/ReplaceFieldTest.java @@ -16,14 +16,14 @@ */ package org.apache.camel.component.kafka.transform; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.support.DefaultExchange; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; class ReplaceFieldTest { diff --git a/components/camel-kafka/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java b/components/camel-kafka/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java index d663381488106..a467257e16e39 100644 --- a/components/camel-kafka/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java +++ b/components/camel-kafka/src/test/java/org/apache/kafka/clients/producer/KafkaProducerTest.java @@ -18,7 +18,6 @@ import java.util.List; -import com.fasterxml.jackson.databind.node.TextNode; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.Message; @@ -34,6 +33,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Spy; import org.mockito.junit.jupiter.MockitoExtension; +import tools.jackson.databind.node.StringNode; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.when; @@ -69,7 +69,7 @@ public void after() { public void testSendOverrideTopic() throws Exception { when(message.removeHeader("kafka.OVERRIDE_TOPIC")).thenReturn("overridden-topic"); camelProducer.process(exchange); - when(message.removeHeader("kafka.OVERRIDE_TOPIC")).thenReturn(new TextNode("overridden-topic-jackson")); + when(message.removeHeader("kafka.OVERRIDE_TOPIC")).thenReturn(new StringNode("overridden-topic-jackson")); camelProducer.process(exchange); List> records = kafkaProducer.history(); assertThat(records.get(0).topic(), Is.is("overridden-topic")); diff --git a/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakSecurityHelper.java b/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakSecurityHelper.java index 30967fbeed7c9..aebc74974bfc8 100644 --- a/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakSecurityHelper.java +++ b/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakSecurityHelper.java @@ -23,8 +23,8 @@ import java.util.Map; import java.util.Set; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import org.keycloak.TokenVerifier; import org.keycloak.common.VerificationException; import org.keycloak.representations.AccessToken; diff --git a/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakTokenIntrospector.java b/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakTokenIntrospector.java index 61f6f1d62b4bc..c977cf3bb2bf9 100644 --- a/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakTokenIntrospector.java +++ b/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakTokenIntrospector.java @@ -20,7 +20,7 @@ import java.util.Base64; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.component.keycloak.security.cache.TokenCache; import org.apache.camel.component.keycloak.security.cache.TokenCacheFactory; import org.apache.camel.component.keycloak.security.cache.TokenCacheType; diff --git a/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityIT.java b/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityIT.java index ed9d553e9881f..874b4f6d9ba0e 100644 --- a/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityIT.java +++ b/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityIT.java @@ -30,8 +30,8 @@ import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.CamelAuthorizationException; import org.apache.camel.CamelExecutionException; import org.apache.camel.RoutesBuilder; diff --git a/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityTestInfraIT.java b/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityTestInfraIT.java index 375fa9ab7696f..c446ec2898aa8 100644 --- a/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityTestInfraIT.java +++ b/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityTestInfraIT.java @@ -33,8 +33,8 @@ import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.CamelAuthorizationException; import org.apache.camel.CamelExecutionException; import org.apache.camel.RoutesBuilder; diff --git a/components/camel-knative/camel-knative-api/pom.xml b/components/camel-knative/camel-knative-api/pom.xml index 1fc03af3f3eb4..935a9983ac389 100644 --- a/components/camel-knative/camel-knative-api/pom.xml +++ b/components/camel-knative/camel-knative-api/pom.xml @@ -45,14 +45,9 @@ camel-support - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - - com.fasterxml.jackson.datatype - jackson-datatype-jdk8 - - org.apache.camel camel-test-junit6 diff --git a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java index 57e557d9f0eaf..47b53959a145d 100644 --- a/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java +++ b/components/camel-knative/camel-knative-api/src/main/java/org/apache/camel/component/knative/spi/Knative.java @@ -16,11 +16,11 @@ */ package org.apache.camel.component.knative.spi; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public final class Knative { - public static final ObjectMapper MAPPER = new ObjectMapper().registerModule(new Jdk8Module()); + public static final ObjectMapper MAPPER = JsonMapper.builder().build(); public static final String MIME_STRUCTURED_CONTENT_MODE = "application/cloudevents+json"; public static final String MIME_BATCH_CONTENT_MODE = "application/cloudevents-batch+json"; diff --git a/components/camel-knative/camel-knative-component/pom.xml b/components/camel-knative/camel-knative-component/pom.xml index 534be0e56c82c..8865913a91521 100644 --- a/components/camel-knative/camel-knative-component/pom.xml +++ b/components/camel-knative/camel-knative-component/pom.xml @@ -49,14 +49,9 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - - com.fasterxml.jackson.datatype - jackson-datatype-jdk8 - - org.apache.camel camel-test-junit6 diff --git a/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeSupport.java b/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeSupport.java index 2cf2622af2d15..1a73a965faee2 100644 --- a/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeSupport.java +++ b/components/camel-knative/camel-knative-component/src/main/java/org/apache/camel/component/knative/KnativeSupport.java @@ -21,12 +21,12 @@ import java.io.StringReader; import java.util.HashMap; -import com.fasterxml.jackson.core.type.TypeReference; import org.apache.camel.CamelContext; import org.apache.camel.component.knative.spi.Knative; import org.apache.camel.component.knative.spi.KnativeResource; import org.apache.camel.component.knative.spi.KnativeSinkBinding; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.type.TypeReference; public class KnativeSupport { private KnativeSupport() { diff --git a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java index 103845a526c40..43f2d3596f327 100644 --- a/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java +++ b/components/camel-knative/camel-knative-http/src/test/java/org/apache/camel/component/knative/http/KnativeHttpTest.java @@ -364,7 +364,7 @@ void testConsumeStructuredContent(CloudEvent ce) throws Exception { "source", "/somewhere", "datacontenttype", "text/plain", "data", "test"), - ObjectMapperType.JACKSON_2) + ObjectMapperType.JACKSON_3) .when() .post() .then() diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/cluster/utils/LockTestServer.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/cluster/utils/LockTestServer.java index 662ba3bc0aaf6..dcf9a09f08ce1 100644 --- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/cluster/utils/LockTestServer.java +++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/cluster/utils/LockTestServer.java @@ -25,8 +25,8 @@ import java.util.TreeSet; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.datatype.jsr310.JavaTimeModule; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.PodBuilder; import io.fabric8.kubernetes.api.model.PodListBuilder; diff --git a/components/camel-leveldb/pom.xml b/components/camel-leveldb/pom.xml index 01814b265a770..0433ce4f79206 100644 --- a/components/camel-leveldb/pom.xml +++ b/components/camel-leveldb/pom.xml @@ -58,7 +58,7 @@ ${leveldb-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/JacksonLevelDBSerializer.java b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/JacksonLevelDBSerializer.java index d703ffb3db26a..6c930b1ba8503 100644 --- a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/JacksonLevelDBSerializer.java +++ b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/JacksonLevelDBSerializer.java @@ -23,13 +23,13 @@ import java.io.IOException; import java.nio.ByteBuffer; -import com.fasterxml.jackson.databind.Module; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; -import org.apache.camel.component.leveldb.serializer.jackson.ObjectMapperHelper; import org.apache.camel.support.DefaultExchange; import org.apache.camel.support.DefaultExchangeHolder; +import tools.jackson.databind.JacksonModule; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class JacksonLevelDBSerializer extends AbstractLevelDBSerializer { @@ -39,8 +39,12 @@ public JacksonLevelDBSerializer() { this(null); } - public JacksonLevelDBSerializer(Module customMudule) { - this.objectMapper = ObjectMapperHelper.create(customMudule); + public JacksonLevelDBSerializer(JacksonModule customMudule) { + if (customMudule != null) { + this.objectMapper = JsonMapper.builder().addModule(customMudule).build(); + } else { + this.objectMapper = JsonMapper.builder().build(); + } } @Override diff --git a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/BodyDeserializer.java b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/BodyDeserializer.java index 3c685869f1a53..b2c8d23318f60 100644 --- a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/BodyDeserializer.java +++ b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/BodyDeserializer.java @@ -16,13 +16,12 @@ */ package org.apache.camel.component.leveldb.serializer.jackson; -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.databind.json.JsonMapper; public class BodyDeserializer extends StdDeserializer { BodyDeserializer() { @@ -30,9 +29,9 @@ public class BodyDeserializer extends StdDeserializer { } @Override - public Object deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { - JsonNode treeNode = p.getCodec().readTree(p); - ObjectMapper om = (ObjectMapper) p.getCodec(); + public Object deserialize(JsonParser p, DeserializationContext ctxt) { + JsonNode treeNode = ctxt.readTree(p); + ObjectMapper om = JsonMapper.builder().build(); if (treeNode.get("clazz") != null) { Class cl = om.readValue(treeNode.get("clazz").toString(), Class.class); diff --git a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/BodySerializer.java b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/BodySerializer.java index 343a2cd603b86..94bc0960d1555 100644 --- a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/BodySerializer.java +++ b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/BodySerializer.java @@ -16,11 +16,9 @@ */ package org.apache.camel.component.leveldb.serializer.jackson; -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ser.std.StdSerializer; public class BodySerializer extends StdSerializer { BodySerializer() { @@ -28,20 +26,20 @@ public class BodySerializer extends StdSerializer { } @Override - public void serialize(Object object, JsonGenerator gen, SerializerProvider provider) throws IOException { + public void serialize(Object object, JsonGenerator gen, SerializationContext provider) { if (object == null) { return; } Package p = object.getClass().getPackage(); if (p == null || p.getName().equals("java.lang") || p.getName().equals("java.util")) { - gen.writeObject(object); + gen.writePOJO(object); } else { gen.writeStartObject(); - gen.writeFieldName("clazz"); - gen.writeObject(object.getClass()); - gen.writeFieldName("data"); - gen.writeObject(object); + gen.writeName("clazz"); + gen.writePOJO(object.getClass()); + gen.writeName("data"); + gen.writePOJO(object); gen.writeEndObject(); } } diff --git a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/HolderBodyMixin.java b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/HolderBodyMixin.java index c7da04a959727..adf6d4fe36936 100644 --- a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/HolderBodyMixin.java +++ b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/HolderBodyMixin.java @@ -16,8 +16,8 @@ */ package org.apache.camel.component.leveldb.serializer.jackson; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; /** * DefaultExchangeHolder uses type Object for inBody and outBody. Which caused during deserialization, that Jackson diff --git a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/ObjectMapperHelper.java b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/ObjectMapperHelper.java index d212e38a6f406..f658bc4bf0681 100644 --- a/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/ObjectMapperHelper.java +++ b/components/camel-leveldb/src/main/java/org/apache/camel/component/leveldb/serializer/jackson/ObjectMapperHelper.java @@ -18,32 +18,33 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; -import com.fasterxml.jackson.databind.Module; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import org.apache.camel.support.DefaultExchangeHolder; +import tools.jackson.databind.JacksonModule; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.module.SimpleModule; +import tools.jackson.databind.ser.std.ToStringSerializer; public final class ObjectMapperHelper { private ObjectMapperHelper() { } - public static ObjectMapper create(Module customModule) { - ObjectMapper objectMapper = new ObjectMapper(); - - objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE); - objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); - + public static ObjectMapper create(JacksonModule customModule) { SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(long.class, ToStringSerializer.instance); simpleModule.setMixInAnnotation(DefaultExchangeHolder.class, HolderBodyMixin.class); - objectMapper.registerModule(simpleModule); + ObjectMapper objectMapper = JsonMapper.builder() + .changeDefaultVisibility(vc -> vc + .withVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE) + .withVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)) + .addModule(simpleModule) + .build(); if (customModule != null) { - objectMapper.registerModule(customModule); + objectMapper.rebuild().addModule(customModule); } return objectMapper; diff --git a/components/camel-leveldb/src/test/java/org/apache/camel/component/leveldb/LevelDBCustomSerializationTest.java b/components/camel-leveldb/src/test/java/org/apache/camel/component/leveldb/LevelDBCustomSerializationTest.java index 92f0d4e0e906f..b484297c1595a 100644 --- a/components/camel-leveldb/src/test/java/org/apache/camel/component/leveldb/LevelDBCustomSerializationTest.java +++ b/components/camel-leveldb/src/test/java/org/apache/camel/component/leveldb/LevelDBCustomSerializationTest.java @@ -23,14 +23,6 @@ import java.util.Objects; import java.util.concurrent.TimeUnit; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; import org.apache.camel.AggregationStrategy; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; @@ -40,6 +32,14 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.OS; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.databind.module.SimpleModule; +import tools.jackson.databind.ser.std.StdSerializer; import static org.apache.camel.test.junit6.TestSupport.deleteDirectory; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -184,7 +184,7 @@ protected ObjectWithBinaryFieldSerializer() { } @Override - public void serialize(ObjectWithBinaryField value, JsonGenerator gen, SerializerProvider provider) throws IOException { + public void serialize(ObjectWithBinaryField value, JsonGenerator gen, SerializationContext provider) { gen.writeString(value.a + "+:" + new String(value.b)); } } @@ -195,9 +195,8 @@ protected ObjectWithBinaryFieldDeserializer() { } @Override - public ObjectWithBinaryField deserialize(JsonParser p, DeserializationContext ctxt) - throws IOException { - JsonNode treeNode = p.getCodec().readTree(p); + public ObjectWithBinaryField deserialize(JsonParser p, DeserializationContext ctxt) { + JsonNode treeNode = ctxt.readTree(p); String s = treeNode.textValue(); diff --git a/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java b/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java index 7f9c352f31b97..cad4fa0bb835f 100644 --- a/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java +++ b/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java @@ -22,8 +22,8 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.AvailablePortFinder; diff --git a/components/camel-lumberjack/pom.xml b/components/camel-lumberjack/pom.xml index e328a40aa6b0d..1e618c83950c5 100644 --- a/components/camel-lumberjack/pom.xml +++ b/components/camel-lumberjack/pom.xml @@ -49,7 +49,7 @@ netty-handler - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackFrameDecoder.java b/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackFrameDecoder.java index bfa5fbd2ddcc7..14143c99277cb 100644 --- a/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackFrameDecoder.java +++ b/components/camel-lumberjack/src/main/java/org/apache/camel/component/lumberjack/io/LumberjackFrameDecoder.java @@ -24,7 +24,6 @@ import java.util.zip.Inflater; import java.util.zip.InflaterOutputStream; -import com.fasterxml.jackson.databind.ObjectMapper; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufOutputStream; import io.netty.channel.ChannelHandlerContext; @@ -32,6 +31,7 @@ import org.apache.camel.RuntimeCamelException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.component.lumberjack.io.LumberjackConstants.FRAME_COMPRESS_HEADER_LENGTH; import static org.apache.camel.component.lumberjack.io.LumberjackConstants.FRAME_DATA_HEADER_LENGTH; diff --git a/components/camel-metrics/pom.xml b/components/camel-metrics/pom.xml index 8bb0bdc8b9699..1d958eecab156 100644 --- a/components/camel-metrics/pom.xml +++ b/components/camel-metrics/pom.xml @@ -60,17 +60,17 @@ ${metrics-version} - com.fasterxml.jackson.core + tools.jackson.core * - com.fasterxml.jackson.core + tools.jackson.core jackson-core - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryService.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryService.java index d55dfa5387682..73155afa6561e 100644 --- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryService.java +++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryService.java @@ -24,9 +24,6 @@ import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.jmx.JmxReporter; import com.codahale.metrics.json.MetricsModule; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; @@ -36,6 +33,10 @@ import org.apache.camel.spi.ManagementAgent; import org.apache.camel.spi.Registry; import org.apache.camel.support.service.ServiceSupport; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectWriter; +import tools.jackson.databind.json.JsonMapper; /** * Service holding the {@link MetricsMessageHistory} which registers all message history metrics. @@ -127,13 +128,13 @@ protected void doInit() throws Exception { } // json mapper - this.mapper = new ObjectMapper().registerModule(new MetricsModule(getRateUnit(), getDurationUnit(), false)); + this.mapper = JsonMapper.builder().addModule(new MetricsModule(getRateUnit(), getDurationUnit(), false)).build(); if (getRateUnit() == TimeUnit.SECONDS && getDurationUnit() == TimeUnit.SECONDS) { // they both use same units so reuse this.secondsMapper = this.mapper; } else { this.secondsMapper - = new ObjectMapper().registerModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.SECONDS, false)); + = JsonMapper.builder().addModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.SECONDS, false)).build(); } } @@ -173,7 +174,7 @@ public String dumpStatisticsAsJson() { } try { return writer.writeValueAsString(getMetricsRegistry()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } @@ -186,7 +187,7 @@ public String dumpStatisticsAsJsonTimeUnitSeconds() { } try { return writer.writeValueAsString(getMetricsRegistry()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java index b809cd169c62f..019474f273a82 100644 --- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java +++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java @@ -23,9 +23,6 @@ import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.jmx.JmxReporter; import com.codahale.metrics.json.MetricsModule; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; @@ -35,6 +32,10 @@ import org.apache.camel.spi.ManagementAgent; import org.apache.camel.spi.Registry; import org.apache.camel.support.service.ServiceSupport; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectWriter; +import tools.jackson.databind.json.JsonMapper; /** * Service holding the {@link MetricRegistry} which registers all metrics. @@ -124,13 +125,13 @@ protected void doInit() throws Exception { } // json mapper - this.mapper = new ObjectMapper().registerModule(new MetricsModule(getRateUnit(), getDurationUnit(), false)); + this.mapper = JsonMapper.builder().addModule(new MetricsModule(getRateUnit(), getDurationUnit(), false)).build(); if (getRateUnit() == TimeUnit.SECONDS && getDurationUnit() == TimeUnit.SECONDS) { // they both use same units so reuse this.secondsMapper = this.mapper; } else { this.secondsMapper - = new ObjectMapper().registerModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.SECONDS, false)); + = JsonMapper.builder().addModule(new MetricsModule(TimeUnit.SECONDS, TimeUnit.SECONDS, false)).build(); } } @@ -166,7 +167,7 @@ public String dumpStatisticsAsJson() { } try { return writer.writeValueAsString(getMetricsRegistry()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } @@ -179,7 +180,7 @@ public String dumpStatisticsAsJsonTimeUnitSeconds() { } try { return writer.writeValueAsString(getMetricsRegistry()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } diff --git a/components/camel-micrometer/pom.xml b/components/camel-micrometer/pom.xml index 0d20ada972578..45bd898c6cb72 100644 --- a/components/camel-micrometer/pom.xml +++ b/components/camel-micrometer/pom.xml @@ -53,7 +53,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/AbstractMicrometerService.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/AbstractMicrometerService.java index b35e28ada0da5..f470cdf613d65 100644 --- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/AbstractMicrometerService.java +++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/AbstractMicrometerService.java @@ -24,9 +24,6 @@ import java.util.function.Predicate; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.DistributionSummary; import io.micrometer.core.instrument.FunctionCounter; @@ -45,6 +42,10 @@ import org.apache.camel.support.service.ServiceSupport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectWriter; +import tools.jackson.databind.json.JsonMapper; import static org.apache.camel.component.micrometer.MicrometerConstants.APP_INFO_METER_NAME; @@ -143,7 +144,7 @@ public String dumpStatisticsAsJson() { } try { return writer.writeValueAsString(getMeterRegistry()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } @@ -155,7 +156,7 @@ public String dumpStatisticsAsJsonTimeUnitSeconds() { } try { return writer.writeValueAsString(getMeterRegistry()); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw RuntimeCamelException.wrapRuntimeCamelException(e); } } @@ -176,12 +177,12 @@ protected void doStart() { } // json mapper - this.mapper = new ObjectMapper() - .registerModule(new MicrometerModule(getDurationUnit(), getMatchingNames(), getMatchingTags())); + this.mapper = JsonMapper.builder() + .addModule(new MicrometerModule(getDurationUnit(), getMatchingNames(), getMatchingTags())).build(); this.secondsMapper = getDurationUnit() == TimeUnit.SECONDS ? this.mapper - : new ObjectMapper() - .registerModule(new MicrometerModule(TimeUnit.SECONDS, getMatchingNames(), getMatchingTags())); + : JsonMapper.builder() + .addModule(new MicrometerModule(TimeUnit.SECONDS, getMatchingNames(), getMatchingTags())).build(); } @Override diff --git a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/MicrometerModule.java b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/MicrometerModule.java index f499fda1cc522..460acfc0829ef 100644 --- a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/MicrometerModule.java +++ b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/json/MicrometerModule.java @@ -25,12 +25,6 @@ import java.util.function.Predicate; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.Module; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.module.SimpleSerializers; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; import io.micrometer.core.instrument.AbstractDistributionSummary; import io.micrometer.core.instrument.AbstractTimer; import io.micrometer.core.instrument.Counter; @@ -48,8 +42,14 @@ import io.micrometer.core.instrument.distribution.HistogramSnapshot; import io.micrometer.core.instrument.distribution.ValueAtPercentile; import io.micrometer.core.instrument.search.Search; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.Version; +import tools.jackson.databind.JacksonModule; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.module.SimpleSerializers; +import tools.jackson.databind.ser.std.StdSerializer; -public class MicrometerModule extends Module { +public class MicrometerModule extends JacksonModule { static final Version VERSION = new Version(1, 0, 5, "", "io.micrometer", "micrometer-core"); @@ -83,10 +83,10 @@ private IdSerializer() { } @Override - public void serialize(Meter.Id id, JsonGenerator json, SerializerProvider provider) throws IOException { + public void serialize(Meter.Id id, JsonGenerator json, SerializationContext provider) { json.writeStartObject(); - json.writeStringField("name", id.getName()); - json.writeObjectField("tags", id.getTags()); + json.writeStringProperty("name", id.getName()); + json.writePOJOProperty("tags", id.getTags()); json.writeEndObject(); } } @@ -97,9 +97,9 @@ private TagSerializer() { } @Override - public void serialize(Tag tag, JsonGenerator json, SerializerProvider provider) throws IOException { + public void serialize(Tag tag, JsonGenerator json, SerializationContext provider) { json.writeStartObject(); - json.writeStringField(tag.getKey(), tag.getValue()); + json.writeStringProperty(tag.getKey(), tag.getValue()); json.writeEndObject(); } } @@ -111,26 +111,30 @@ private MeterSerializer(Class clazz) { } @Override - public final void serialize(T meter, JsonGenerator json, SerializerProvider provider) throws IOException { + public final void serialize(T meter, JsonGenerator json, SerializationContext provider) { json.writeStartObject(); - json.writeObjectField("id", meter.getId()); - serializeStatistics(meter, json, provider); + json.writePOJOProperty("id", meter.getId()); + try { + serializeStatistics(meter, json, provider); + } catch (IOException ioe) { + throw new RuntimeException(ioe); + } json.writeEndObject(); } - protected abstract void serializeStatistics(T meter, JsonGenerator json, SerializerProvider provider) + protected abstract void serializeStatistics(T meter, JsonGenerator json, SerializationContext provider) throws IOException; protected static void serializeSnapshot(JsonGenerator json, HistogramSnapshot snapshot, TimeUnit timeUnit) throws IOException { - json.writeNumberField("count", snapshot.count()); - json.writeNumberField("max", snapshot.max(timeUnit)); - json.writeNumberField("mean", snapshot.mean(timeUnit)); - json.writeNumberField("total", snapshot.total(timeUnit)); + json.writeNumberProperty("count", snapshot.count()); + json.writeNumberProperty("max", snapshot.max(timeUnit)); + json.writeNumberProperty("mean", snapshot.mean(timeUnit)); + json.writeNumberProperty("total", snapshot.total(timeUnit)); ValueAtPercentile[] percentiles = snapshot.percentileValues(); for (ValueAtPercentile percentile : percentiles) { int p = (int) percentile.percentile() * 100; - json.writeNumberField("p" + p, percentile.value(timeUnit)); + json.writeNumberProperty("p" + p, percentile.value(timeUnit)); } } } @@ -141,8 +145,8 @@ private GaugeSerializer() { } @Override - protected void serializeStatistics(Gauge gauge, JsonGenerator json, SerializerProvider provider) throws IOException { - json.writeNumberField("value", gauge.value()); + protected void serializeStatistics(Gauge gauge, JsonGenerator json, SerializationContext provider) throws IOException { + json.writeNumberProperty("value", gauge.value()); } } @@ -152,9 +156,9 @@ private CounterSerializer() { } @Override - protected void serializeStatistics(Counter counter, JsonGenerator json, SerializerProvider provider) + protected void serializeStatistics(Counter counter, JsonGenerator json, SerializationContext provider) throws IOException { - json.writeNumberField("count", counter.count()); + json.writeNumberProperty("count", counter.count()); } } @@ -164,9 +168,9 @@ private FunctionCounterSerializer() { } @Override - protected void serializeStatistics(FunctionCounter counter, JsonGenerator json, SerializerProvider provider) + protected void serializeStatistics(FunctionCounter counter, JsonGenerator json, SerializationContext provider) throws IOException { - json.writeNumberField("count", counter.count()); + json.writeNumberProperty("count", counter.count()); } } @@ -180,7 +184,7 @@ private TimerSerializer(TimeUnit timeUnit) { } @Override - protected void serializeStatistics(AbstractTimer timer, JsonGenerator json, SerializerProvider provider) + protected void serializeStatistics(AbstractTimer timer, JsonGenerator json, SerializationContext provider) throws IOException { serializeSnapshot(json, timer.takeSnapshot(), timeUnit); } @@ -197,11 +201,11 @@ private FunctionTimerSerializer(TimeUnit timeUnit) { } @Override - protected void serializeStatistics(FunctionTimer timer, JsonGenerator json, SerializerProvider provider) + protected void serializeStatistics(FunctionTimer timer, JsonGenerator json, SerializationContext provider) throws IOException { - json.writeNumberField("count", timer.count()); - json.writeNumberField("mean", timer.mean(timeUnit)); - json.writeNumberField("total", timer.totalTime(timeUnit)); + json.writeNumberProperty("count", timer.count()); + json.writeNumberProperty("mean", timer.mean(timeUnit)); + json.writeNumberProperty("total", timer.totalTime(timeUnit)); } } @@ -215,10 +219,10 @@ private LongTaskTimerSerializer(TimeUnit timeUnit) { } @Override - protected void serializeStatistics(LongTaskTimer timer, JsonGenerator json, SerializerProvider provider) + protected void serializeStatistics(LongTaskTimer timer, JsonGenerator json, SerializationContext provider) throws IOException { - json.writeNumberField("activeTasks", timer.activeTasks()); - json.writeNumberField("duration", timer.duration(timeUnit)); + json.writeNumberProperty("activeTasks", timer.activeTasks()); + json.writeNumberProperty("duration", timer.duration(timeUnit)); } } @@ -233,9 +237,8 @@ private DistributionSummarySerializer(TimeUnit timeUnit) { @Override protected void serializeStatistics( - AbstractDistributionSummary distributionSummary, - JsonGenerator json, - SerializerProvider provider) + AbstractDistributionSummary distributionSummary, JsonGenerator json, + SerializationContext provider) throws IOException { serializeSnapshot(json, distributionSummary.takeSnapshot(), timeUnit); } @@ -256,18 +259,17 @@ private MeterRegistrySerializer(Predicate matchingNames, Iterable m public void serialize( MeterRegistry registry, JsonGenerator json, - SerializerProvider provider) - throws IOException { + SerializationContext provider) { json.writeStartObject(); - json.writeStringField("version", VERSION.toString()); - json.writeObjectField("gauges", meters(registry, Gauge.class, matchingNames, matchingTags)); - json.writeObjectField("counters", meters(registry, Counter.class, matchingNames, matchingTags)); - json.writeObjectField("functionCounters", meters(registry, FunctionCounter.class, matchingNames, matchingTags)); - json.writeObjectField("timers", meters(registry, Timer.class, matchingNames, matchingTags)); - json.writeObjectField("functionTimers", meters(registry, FunctionTimer.class, matchingNames, matchingTags)); - json.writeObjectField("longTaskTimers", meters(registry, LongTaskTimer.class, matchingNames, matchingTags)); - json.writeObjectField("distributionSummaries", + json.writeStringProperty("version", VERSION.toString()); + json.writePOJOProperty("gauges", meters(registry, Gauge.class, matchingNames, matchingTags)); + json.writePOJOProperty("counters", meters(registry, Counter.class, matchingNames, matchingTags)); + json.writePOJOProperty("functionCounters", meters(registry, FunctionCounter.class, matchingNames, matchingTags)); + json.writePOJOProperty("timers", meters(registry, Timer.class, matchingNames, matchingTags)); + json.writePOJOProperty("functionTimers", meters(registry, FunctionTimer.class, matchingNames, matchingTags)); + json.writePOJOProperty("longTaskTimers", meters(registry, LongTaskTimer.class, matchingNames, matchingTags)); + json.writePOJOProperty("distributionSummaries", meters(registry, DistributionSummary.class, matchingNames, matchingTags)); json.writeEndObject(); } diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java index d5b41a87e4bc2..4607a6f7d6312 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java @@ -23,7 +23,7 @@ import java.util.Map; import java.util.stream.StreamSupport; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.client.MongoClient; diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/converters/MongoDbFallbackConverter.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/converters/MongoDbFallbackConverter.java index e3449c67f56ac..f0dd9e057f657 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/converters/MongoDbFallbackConverter.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/converters/MongoDbFallbackConverter.java @@ -19,7 +19,7 @@ import java.math.BigDecimal; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import com.mongodb.BasicDBList; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; diff --git a/components/camel-ocsf/pom.xml b/components/camel-ocsf/pom.xml index 53c721f669889..6cea850d3704e 100644 --- a/components/camel-ocsf/pom.xml +++ b/components/camel-ocsf/pom.xml @@ -43,13 +43,9 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - diff --git a/components/camel-openapi-java/pom.xml b/components/camel-openapi-java/pom.xml index c1344f1d45aa0..272ba7444fc94 100644 --- a/components/camel-openapi-java/pom.xml +++ b/components/camel-openapi-java/pom.xml @@ -38,6 +38,18 @@ true + + + + com.fasterxml.jackson + jackson-bom + ${jackson2-version} + pom + import + + + + diff --git a/components/camel-opensearch/pom.xml b/components/camel-opensearch/pom.xml index 4fc87f5c3f946..3e21accd2718e 100644 --- a/components/camel-opensearch/pom.xml +++ b/components/camel-opensearch/pom.xml @@ -61,7 +61,7 @@ ${opensearch-rest-client-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java index 2dcb149520ca4..9d2d3ba817660 100644 --- a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java +++ b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java @@ -20,12 +20,12 @@ import javax.net.ssl.HostnameVerifier; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; import org.apache.camel.spi.UriPath; import org.apache.hc.core5.http.HttpHost; +import tools.jackson.databind.node.ObjectNode; @UriParams public class OpensearchConfiguration { diff --git a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java index f42423d27c22c..8024c5c33a613 100644 --- a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java +++ b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java @@ -27,8 +27,6 @@ import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.AsyncCallback; import org.apache.camel.CamelExchangeException; import org.apache.camel.Exchange; @@ -78,6 +76,8 @@ import org.opensearch.client.transport.rest_client.RestClientTransport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; import static org.apache.camel.component.opensearch.OpensearchConstants.PARAM_SCROLL; import static org.apache.camel.component.opensearch.OpensearchConstants.PARAM_SCROLL_KEEP_ALIVE_MS; diff --git a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/converter/OpensearchActionRequestConverter.java b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/converter/OpensearchActionRequestConverter.java index a5dececfbf04c..bc417dba1ef6f 100644 --- a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/converter/OpensearchActionRequestConverter.java +++ b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/converter/OpensearchActionRequestConverter.java @@ -24,9 +24,6 @@ import java.util.Map; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.Converter; import org.apache.camel.Exchange; import org.apache.camel.component.opensearch.OpensearchConstants; @@ -51,6 +48,9 @@ import org.opensearch.client.opensearch.indices.DeleteIndexRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; @Converter(generateLoader = true) public final class OpensearchActionRequestConverter { diff --git a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchBulkIT.java b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchBulkIT.java index 3e4888c23ecf3..a12398a5f0264 100644 --- a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchBulkIT.java +++ b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchBulkIT.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; import org.opensearch.client.opensearch.core.BulkRequest; @@ -37,6 +36,7 @@ import org.opensearch.client.opensearch.core.bulk.DeleteOperation; import org.opensearch.client.opensearch.core.bulk.IndexOperation; import org.opensearch.client.opensearch.core.bulk.UpdateOperation; +import tools.jackson.databind.node.ObjectNode; import static org.apache.camel.test.junit6.TestSupport.assertCollectionSize; import static org.hamcrest.CoreMatchers.equalTo; diff --git a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchClusterIndexIT.java b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchClusterIndexIT.java index ee90d1d134e39..968837fca42ad 100644 --- a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchClusterIndexIT.java +++ b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchClusterIndexIT.java @@ -19,7 +19,6 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.opensearch.OpensearchConstants; import org.apache.camel.component.opensearch.OpensearchOperation; @@ -27,6 +26,7 @@ import org.junit.jupiter.api.Test; import org.opensearch.client.Request; import org.opensearch.client.opensearch.core.GetRequest; +import tools.jackson.databind.node.ObjectNode; import static org.apache.camel.test.junit6.TestSupport.assertStringContains; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java index 782d7fb73c91f..e9c40527cd55e 100644 --- a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java +++ b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java @@ -26,8 +26,6 @@ import java.util.concurrent.TimeUnit; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.opensearch.OpensearchConstants; import org.apache.camel.component.opensearch.OpensearchOperation; @@ -49,6 +47,8 @@ import org.opensearch.client.opensearch.core.msearch.RequestItem; import org.opensearch.client.opensearch.core.search.HitsMetadata; import org.testcontainers.shaded.org.awaitility.Awaitility; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.ObjectNode; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; diff --git a/components/camel-plc4x/pom.xml b/components/camel-plc4x/pom.xml index c22190696539c..4004b4f284f20 100644 --- a/components/camel-plc4x/pom.xml +++ b/components/camel-plc4x/pom.xml @@ -50,7 +50,7 @@ ${plc4x-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind @@ -64,7 +64,7 @@ runtime - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java index 36da6ffd19f48..5a9cc97edc514 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java @@ -34,7 +34,7 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; import org.slf4j.Logger; diff --git a/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubOperationsTest.java b/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubOperationsTest.java index 4cc2cbea00eaa..e5474646cf390 100644 --- a/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubOperationsTest.java +++ b/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubOperationsTest.java @@ -21,8 +21,8 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectWriter; import com.pubnub.api.models.consumer.history.PNHistoryItemResult; import com.pubnub.api.models.consumer.presence.PNGetStateResult; import com.pubnub.api.models.consumer.presence.PNHereNowResult; diff --git a/components/camel-rest-openapi/pom.xml b/components/camel-rest-openapi/pom.xml index 07df8a6d02843..dc9c790977134 100644 --- a/components/camel-rest-openapi/pom.xml +++ b/components/camel-rest-openapi/pom.xml @@ -84,14 +84,14 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core - ${jackson2-version} + ${jackson-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson2-version} + ${jackson-version} io.swagger.core.v3 @@ -100,9 +100,9 @@ - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-yaml - ${jackson2-version} + ${jackson-version} diff --git a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/validator/DefaultRequestValidator.java b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/validator/DefaultRequestValidator.java index af20dc487bf4f..4da705b1cce42 100644 --- a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/validator/DefaultRequestValidator.java +++ b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/validator/DefaultRequestValidator.java @@ -22,12 +22,12 @@ import java.util.Set; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.json.JsonMapper; import io.swagger.v3.oas.models.media.Content; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.support.MessageHelper; import org.apache.camel.util.ObjectHelper; +import tools.jackson.databind.json.JsonMapper; import static org.apache.camel.support.http.RestUtil.isValidOrAcceptedContentType; diff --git a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java index 158ecea5c4c8f..4859e5b2d4d40 100644 --- a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java +++ b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java @@ -33,8 +33,6 @@ import javax.imageio.ImageIO; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.cfg.EnumFeature; import com.github.tomakehurst.wiremock.WireMockServer; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; @@ -50,6 +48,9 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.cfg.EnumFeature; +import tools.jackson.databind.json.JsonMapper; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.binaryEqualTo; @@ -410,8 +411,9 @@ public static Iterable fruitsApiVersions() { @Override protected RoutesBuilder createRouteBuilder() throws Exception { - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(EnumFeature.WRITE_ENUMS_TO_LOWERCASE, true); + ObjectMapper mapper = JsonMapper.builder() + .enable(EnumFeature.WRITE_ENUMS_TO_LOWERCASE) + .build(); JacksonDataFormat jacksonDataFormat = new JacksonDataFormat(); jacksonDataFormat.setObjectMapper(mapper); diff --git a/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/ObjectDescriptions.java b/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/ObjectDescriptions.java index 3a6e82417a7a1..50d7d0bcc8672 100644 --- a/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/ObjectDescriptions.java +++ b/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/ObjectDescriptions.java @@ -27,7 +27,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.SalesforceException; import org.apache.camel.component.salesforce.api.dto.GlobalObjects; import org.apache.camel.component.salesforce.api.dto.SObject; diff --git a/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/SchemaExecution.java b/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/SchemaExecution.java index cb106c294db15..b45f5eee7f7de 100644 --- a/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/SchemaExecution.java +++ b/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/SchemaExecution.java @@ -25,8 +25,8 @@ import java.util.HashSet; import java.util.Set; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchema; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.module.jsonSchema.jakarta.JsonSchema; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.slf4j.Logger; diff --git a/components/camel-salesforce/camel-salesforce-codegen/src/main/resources/sobject-pojo-optional.vm b/components/camel-salesforce/camel-salesforce-codegen/src/main/resources/sobject-pojo-optional.vm index c633ab137be18..fb793552c2e13 100644 --- a/components/camel-salesforce/camel-salesforce-codegen/src/main/resources/sobject-pojo-optional.vm +++ b/components/camel-salesforce/camel-salesforce-codegen/src/main/resources/sobject-pojo-optional.vm @@ -38,8 +38,8 @@ import org.apache.camel.component.salesforce.api.MultiSelectPicklistSerializer; import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase; import com.fasterxml.jackson.annotation.JsonProperty; #if ( $hasMultiSelectPicklists ) -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; #end /** diff --git a/components/camel-salesforce/camel-salesforce-codegen/src/main/resources/sobject-pojo.vm b/components/camel-salesforce/camel-salesforce-codegen/src/main/resources/sobject-pojo.vm index 5a7c1a3839189..3e1956d29857d 100644 --- a/components/camel-salesforce/camel-salesforce-codegen/src/main/resources/sobject-pojo.vm +++ b/components/camel-salesforce/camel-salesforce-codegen/src/main/resources/sobject-pojo.vm @@ -61,14 +61,14 @@ import org.apache.camel.component.salesforce.api.dto.SObjectField; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; #if ( $hasBlobFields ) import com.fasterxml.jackson.annotation.JsonIgnore; #end import org.apache.camel.component.salesforce.api.utils.AsNestedPropertyResolver; #if ( $hasMultiSelectPicklists ) -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; #end diff --git a/components/camel-salesforce/camel-salesforce-component/pom.xml b/components/camel-salesforce/camel-salesforce-component/pom.xml index 93dfb8237b621..b8428e1d2fbce 100644 --- a/components/camel-salesforce/camel-salesforce-component/pom.xml +++ b/components/camel-salesforce/camel-salesforce-component/pom.xml @@ -69,20 +69,16 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-core - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - - com.fasterxml.jackson.jakarta.rs + tools.jackson.jakarta.rs jackson-jakarta-rs-json-provider @@ -91,10 +87,6 @@ - - com.fasterxml.jackson.module - jackson-module-jsonSchema-jakarta - commons-io commons-io diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java index e931392757c6f..82e5a29d1efc5 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/SalesforceEndpointConfig.java @@ -22,7 +22,6 @@ import java.util.Map; import java.util.Optional; -import com.fasterxml.jackson.databind.ObjectMapper; import com.salesforce.eventbus.protobuf.ReplayPreset; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportMetadata; @@ -35,6 +34,7 @@ import org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; +import tools.jackson.databind.ObjectMapper; /** * Salesforce Endpoint configuration. diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/StreamingApiConsumer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/StreamingApiConsumer.java index fd5b6e4e64e04..8adbec464e8cc 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/StreamingApiConsumer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/StreamingApiConsumer.java @@ -21,7 +21,6 @@ import java.util.Map; import java.util.concurrent.ExecutorService; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.Processor; @@ -38,6 +37,7 @@ import org.cometd.bayeux.client.ClientSessionChannel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; /** * The Salesforce Streaming API consumer. diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java index 376c2360cbe86..f65379e09578f 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java @@ -16,17 +16,17 @@ */ package org.apache.camel.component.salesforce.api; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.PropertyWriter; -import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase; import org.apache.commons.lang3.reflect.FieldUtils; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ser.PropertyWriter; +import tools.jackson.databind.ser.std.SimpleBeanPropertyFilter; public class FieldsToNullPropertyFilter extends SimpleBeanPropertyFilter { @Override - public void serializeAsField(Object pojo, JsonGenerator jgen, SerializerProvider provider, PropertyWriter writer) + public void serializeAsField(Object pojo, JsonGenerator jgen, SerializationContext provider, PropertyWriter writer) throws Exception { AbstractSObjectBase sob = (AbstractSObjectBase) pojo; diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java index f3e405acdd902..8c797b6ef5e2e 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java @@ -16,23 +16,21 @@ */ package org.apache.camel.component.salesforce.api; -import java.io.IOException; import java.lang.reflect.Array; import java.lang.reflect.Method; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.deser.ContextualDeserializer; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.core.exc.StreamReadException; +import tools.jackson.databind.BeanProperty; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.ValueDeserializer; +import tools.jackson.databind.deser.std.StdDeserializer; /** * Jackson deserializer base class for reading ';' separated strings for MultiSelect pick-lists. */ -public class MultiSelectPicklistDeserializer extends StdDeserializer implements ContextualDeserializer { +public class MultiSelectPicklistDeserializer extends StdDeserializer implements ValueDeserializer { private static final long serialVersionUID = -4568286926393043366L; @@ -47,22 +45,22 @@ public MultiSelectPicklistDeserializer() { this.enumClass = null; } - public MultiSelectPicklistDeserializer(JsonParser jp, Class> enumClass) throws JsonMappingException { + public MultiSelectPicklistDeserializer(JsonParser jp, Class> enumClass) throws DatabindException { super(enumClass); this.enumClass = enumClass; try { this.factoryMethod = enumClass.getMethod(FACTORY_METHOD, String.class); } catch (NoSuchMethodException e) { - throw new JsonMappingException(jp, "Invalid pick-list enum class " + enumClass.getName(), e); + throw DatabindException.from(jp, "Invalid pick-list enum class " + enumClass.getName(), e); } } @Override - public Object deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { + public Object deserialize(JsonParser jp, DeserializationContext ctxt) { // validate enum class if (enumClass == null) { - throw new JsonMappingException(jp, "Unable to parse unknown pick-list type"); + throw DatabindException.from(jp, "Unable to parse unknown pick-list type"); } final String listValue = jp.getText(); @@ -79,18 +77,18 @@ public Object deserialize(JsonParser jp, DeserializationContext ctxt) throws IOE return resultArray; } catch (Exception e) { - throw new JsonParseException(jp, "Exception reading multi-select pick list value", jp.currentLocation()); + throw new StreamReadException(jp, "Exception reading multi-select pick list value", jp.currentLocation()); } } @SuppressWarnings("unchecked") @Override - public JsonDeserializer createContextual(DeserializationContext context, BeanProperty property) - throws JsonMappingException { + public ValueDeserializer createContextual(DeserializationContext context, BeanProperty property) + throws DatabindException { final Class rawClass = property.getType().getRawClass(); final Class componentType = rawClass.getComponentType(); if (componentType == null || !componentType.isEnum()) { - throw new JsonMappingException(context.getParser(), "Pick list Enum array expected for " + rawClass); + throw DatabindException.from(context.getParser(), "Pick list Enum array expected for " + rawClass); } return new MultiSelectPicklistDeserializer(context.getParser(), (Class>) componentType); } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java index 2267840385f0e..81f8845b96b84 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java @@ -20,10 +20,10 @@ import java.lang.reflect.Array; import java.lang.reflect.Method; -import com.fasterxml.jackson.core.JsonGenerationException; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.StreamWriteException; +import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.ser.std.StdSerializer; /** * Jackson Serializer for generating ';' separated strings for MultiSelect pick-lists. @@ -60,7 +60,7 @@ public void serialize(Object value, JsonGenerator jgen, SerializerProvider provi jgen.writeString(buffer.toString()); } catch (Exception e) { - throw new JsonGenerationException( + throw new StreamWriteException( String.format("Exception writing pick list value %s of type %s: %s", value, value.getClass().getName(), e.getMessage()), jgen); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java index e2fd93da14529..3e1b41ea29357 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java @@ -16,17 +16,16 @@ */ package org.apache.camel.component.salesforce.api; -import java.io.IOException; import java.lang.reflect.Array; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.deser.ContextualDeserializer; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.core.StreamReadException; +import tools.jackson.databind.BeanProperty; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.deser.ContextualDeserializer; +import tools.jackson.databind.deser.std.StdDeserializer; /** * Jackson deserializer base class for reading ';' separated strings for MultiSelect pick-lists. @@ -44,7 +43,7 @@ protected StringMultiSelectPicklistDeserializer(Class vc) { } @Override - public Object deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { + public Object deserialize(JsonParser jp, DeserializationContext ctxt) { final String listValue = jp.getText(); @@ -60,17 +59,17 @@ public Object deserialize(JsonParser jp, DeserializationContext ctxt) throws IOE return resultArray; } catch (Exception e) { - throw new JsonParseException(jp, "Exception reading multi-select pick list value", jp.currentLocation(), e); + throw new StreamReadException(jp, "Exception reading multi-select pick list value", jp.currentLocation(), e); } } @Override public JsonDeserializer createContextual(DeserializationContext context, BeanProperty property) - throws JsonMappingException { + throws DatabindException { final Class rawClass = property.getType().getRawClass(); final Class componentType = rawClass.getComponentType(); if (componentType == null || componentType != String.class) { - throw new JsonMappingException(context.getParser(), "Pick list String array expected for " + rawClass); + throw DatabindException.from(context.getParser(), "Pick list String array expected for " + rawClass); } return new StringMultiSelectPicklistDeserializer(rawClass); } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java index 232df99d6ff1b..19300d414b32d 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java @@ -16,12 +16,10 @@ */ package org.apache.camel.component.salesforce.api; -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonGenerationException; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.StreamWriteException; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ser.std.StdSerializer; /** * Jackson Serializer for generating ';' separated strings for MultiSelect pick-lists. @@ -39,7 +37,7 @@ protected StringMultiSelectPicklistSerializer(Class t) { } @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException { + public void serialize(Object value, JsonGenerator jgen, SerializationContext provider) { try { String[] a = (String[]) value; @@ -57,7 +55,7 @@ public void serialize(Object value, JsonGenerator jgen, SerializerProvider provi jgen.writeString(buffer.toString()); } catch (Exception e) { - throw new JsonGenerationException( + throw new StreamWriteException( String.format("Exception writing pick list value %s of type %s: %s", value, value.getClass().getName(), e.getMessage()), jgen); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/TypeReferences.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/TypeReferences.java index afe138c1e5d59..0c5a7697790c0 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/TypeReferences.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/TypeReferences.java @@ -19,7 +19,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.core.type.TypeReference; import org.apache.camel.component.salesforce.api.dto.Limits.Usage; import org.apache.camel.component.salesforce.api.dto.RecentItem; import org.apache.camel.component.salesforce.api.dto.RestError; @@ -27,6 +26,7 @@ import org.apache.camel.component.salesforce.api.dto.Version; import org.apache.camel.component.salesforce.api.dto.analytics.reports.RecentReport; import org.apache.camel.component.salesforce.api.dto.analytics.reports.ReportInstance; +import tools.jackson.core.type.TypeReference; /** * Class that holds {@link TypeReference} instances needed for Jackson mapper to support generics. diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java index 45157bca39ea9..b2b1ed85cb213 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java @@ -20,8 +20,8 @@ import java.io.StringWriter; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.utils.JsonUtils; +import tools.jackson.databind.ObjectMapper; // avoid running into Salesforce backward compatibility breaks @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/Limits.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/Limits.java index 018b6f1f4d635..26b780019812e 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/Limits.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/Limits.java @@ -29,12 +29,12 @@ import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.apache.camel.component.salesforce.api.TypeReferences; import org.apache.camel.component.salesforce.api.dto.Limits.LimitsDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.annotation.JsonDeserialize; /** * Data given by the `Limits` resource on Salesforce. diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResult.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResult.java index 876017396934e..565055da18147 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResult.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResult.java @@ -25,14 +25,14 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import org.apache.camel.component.salesforce.api.dto.RestError; import org.apache.camel.component.salesforce.api.dto.approval.ApprovalResult.ApprovalResultDeserializer; import org.apache.camel.component.salesforce.api.dto.approval.ApprovalResult.Result; +import tools.jackson.core.JsonParser; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.annotation.JsonDeserialize; @JsonDeserialize(using = ApprovalResultDeserializer.class) public final class ApprovalResult implements Serializable, Iterable { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyDeserializer.java index 675a4c2019d6b..8cd004ef241ad 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyDeserializer.java @@ -16,19 +16,17 @@ */ package org.apache.camel.component.salesforce.api.utils; -import java.io.IOException; - import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.BeanProperty; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.jsontype.TypeDeserializer; -import com.fasterxml.jackson.databind.jsontype.TypeIdResolver; -import com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer; -import com.fasterxml.jackson.databind.node.TreeTraversingParser; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.BeanProperty; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.jsontype.TypeDeserializer; +import tools.jackson.databind.jsontype.TypeIdResolver; +import tools.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer; +import tools.jackson.databind.node.TreeTraversingParser; public class AsNestedPropertyDeserializer extends AsPropertyTypeDeserializer { @@ -47,7 +45,7 @@ public TypeDeserializer forProperty(BeanProperty prop) { } @Override - public Object deserializeTypedFromObject(JsonParser p, DeserializationContext ctxt) throws IOException { + public Object deserializeTypedFromObject(JsonParser p, DeserializationContext ctxt) { JsonNode originalNode = p.readValueAsTree(); JsonNode node = originalNode; for (String property : _typePropertyName.split("\\.")) { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyResolver.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyResolver.java index faf4219c4dd71..fc71f861b5404 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyResolver.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyResolver.java @@ -18,13 +18,13 @@ import java.util.Collection; -import com.fasterxml.jackson.databind.DeserializationConfig; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.jsontype.NamedType; -import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator; -import com.fasterxml.jackson.databind.jsontype.TypeDeserializer; -import com.fasterxml.jackson.databind.jsontype.TypeIdResolver; -import com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder; +import tools.jackson.databind.DeserializationConfig; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.jsontype.NamedType; +import tools.jackson.databind.jsontype.PolymorphicTypeValidator; +import tools.jackson.databind.jsontype.TypeDeserializer; +import tools.jackson.databind.jsontype.TypeIdResolver; +import tools.jackson.databind.jsontype.impl.StdTypeResolverBuilder; public class AsNestedPropertyResolver extends StdTypeResolverBuilder { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantDeserializer.java index 6405ac97e66b5..af7140898a91a 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantDeserializer.java @@ -18,7 +18,7 @@ import java.time.Instant; -import com.fasterxml.jackson.databind.JsonDeserializer; +import tools.jackson.databind.JsonDeserializer; import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantSerializer.java index bce3da1be752b..9c9f671683260 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantSerializer.java @@ -21,10 +21,10 @@ import java.time.ZoneId; import java.time.ZonedDateTime; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.JsonSerializer; +import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.ser.std.StdSerializer; final class InstantSerializer extends StdSerializer { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/JsonUtils.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/JsonUtils.java index 78f3a7dfabcff..9b3a8c9500bbf 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/JsonUtils.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/JsonUtils.java @@ -25,32 +25,6 @@ import java.util.Set; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.BeanDescription; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationConfig; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonValueFormat; -import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; -import com.fasterxml.jackson.databind.ser.BeanSerializerFactory; -import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; -import com.fasterxml.jackson.databind.ser.PropertyWriter; -import com.fasterxml.jackson.databind.ser.SerializerFactory; -import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; -import com.fasterxml.jackson.databind.ser.std.NullSerializer; -import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchemaGenerator; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.ArraySchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.BooleanSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.IntegerSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.NullSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.NumberSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.ObjectSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.SimpleTypeSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.StringSchema; import org.apache.camel.component.salesforce.api.FieldsToNullPropertyFilter; import org.apache.camel.component.salesforce.api.dto.AbstractDTOBase; import org.apache.camel.component.salesforce.api.dto.AbstractQueryRecordsBase; @@ -64,6 +38,32 @@ import org.apache.camel.support.scan.DefaultPackageScanClassResolver; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.BeanDescription; +import tools.jackson.databind.DatabindException; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.JsonSerializer; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationConfig; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.jsonFormatVisitors.JsonValueFormat; +import tools.jackson.databind.ser.BeanPropertyWriter; +import tools.jackson.databind.ser.BeanSerializerFactory; +import tools.jackson.databind.ser.BeanSerializerModifier; +import tools.jackson.databind.ser.PropertyWriter; +import tools.jackson.databind.ser.SerializerFactory; +import tools.jackson.databind.ser.impl.SimpleFilterProvider; +import tools.jackson.databind.ser.std.NullSerializer; +import tools.jackson.module.jsonSchema.jakarta.JsonSchema; +import tools.jackson.module.jsonSchema.jakarta.JsonSchemaGenerator; +import tools.jackson.module.jsonSchema.jakarta.types.ArraySchema; +import tools.jackson.module.jsonSchema.jakarta.types.BooleanSchema; +import tools.jackson.module.jsonSchema.jakarta.types.IntegerSchema; +import tools.jackson.module.jsonSchema.jakarta.types.NullSchema; +import tools.jackson.module.jsonSchema.jakarta.types.NumberSchema; +import tools.jackson.module.jsonSchema.jakarta.types.ObjectSchema; +import tools.jackson.module.jsonSchema.jakarta.types.SimpleTypeSchema; +import tools.jackson.module.jsonSchema.jakarta.types.StringSchema; import static java.util.stream.Collectors.joining; @@ -96,7 +96,7 @@ public static ObjectMapper createObjectMapper() { return objectMapper; } - public static String getBasicApiJsonSchema() throws JsonProcessingException { + public static String getBasicApiJsonSchema() throws JacksonException { ObjectMapper mapper = createSchemaObjectMapper(); JsonSchemaGenerator schemaGen = new JsonSchemaGenerator(mapper); @@ -126,7 +126,7 @@ public static String getBasicApiJsonSchema() throws JsonProcessingException { } public static String getJsonSchemaString(ObjectMapper mapper, Set allSchemas, String id) - throws JsonProcessingException { + throws JacksonException { JsonSchema rootSchema = getJsonSchemaAsSchema(allSchemas, id); return mapper.writeValueAsString(rootSchema); @@ -143,23 +143,23 @@ public static JsonSchema getJsonSchemaAsSchema(Set allSchemas, Strin return rootSchema; } - public static String getSObjectJsonSchema(SObjectDescription description) throws JsonProcessingException { + public static String getSObjectJsonSchema(SObjectDescription description) throws JacksonException { return getSObjectJsonSchema(description, true); } - public static JsonSchema getSObjectJsonSchemaAsJson(SObjectDescription description) throws JsonProcessingException { + public static JsonSchema getSObjectJsonSchemaAsJson(SObjectDescription description) throws JacksonException { return getSObjectJsonSchemaAsSchema(description, true); } public static String getSObjectJsonSchema(SObjectDescription description, boolean addQuerySchema) - throws JsonProcessingException { + throws JacksonException { ObjectMapper schemaObjectMapper = createSchemaObjectMapper(); return getJsonSchemaString(schemaObjectMapper, getSObjectJsonSchema(schemaObjectMapper, description, DEFAULT_ID_PREFIX, addQuerySchema), DEFAULT_ID_PREFIX); } public static JsonSchema getSObjectJsonSchemaAsSchema(SObjectDescription description, boolean addQuerySchema) - throws JsonProcessingException { + throws JacksonException { ObjectMapper schemaObjectMapper = createSchemaObjectMapper(); return getJsonSchemaAsSchema(getSObjectJsonSchema(schemaObjectMapper, description, DEFAULT_ID_PREFIX, addQuerySchema), DEFAULT_ID_PREFIX); @@ -167,7 +167,7 @@ public static JsonSchema getSObjectJsonSchemaAsSchema(SObjectDescription descrip public static Set getSObjectJsonSchema( ObjectMapper objectMapper, SObjectDescription description, String idPrefix, boolean addQuerySchema) - throws JsonProcessingException { + throws JacksonException { Set allSchemas = new HashSet<>(); // generate SObject schema from description @@ -322,7 +322,7 @@ public static ObjectMapper createSchemaObjectMapper() { return objectMapper; } - private static ObjectSchema getSchemaFromClass(ObjectMapper objectMapper, Class type) throws JsonMappingException { + private static ObjectSchema getSchemaFromClass(ObjectMapper objectMapper, Class type) throws DatabindException { return new JsonSchemaGenerator(objectMapper).generateSchema(type).asObjectSchema(); } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeDeserializer.java index 0c8e65d3093e5..e7387e27cc0d7 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeDeserializer.java @@ -16,14 +16,13 @@ */ package org.apache.camel.component.salesforce.api.utils; -import java.io.IOException; import java.time.LocalDateTime; import java.time.ZonedDateTime; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.deser.std.StdDeserializer; final class LocalDateTimeDeserializer extends StdDeserializer { @@ -36,8 +35,7 @@ private LocalDateTimeDeserializer() { } @Override - public LocalDateTime deserialize(final JsonParser p, final DeserializationContext ctxt) - throws IOException { + public LocalDateTime deserialize(final JsonParser p, final DeserializationContext ctxt) { final ZonedDateTime zonedDateTime = ctxt.readValue(p, ZonedDateTime.class); return zonedDateTime.toLocalDateTime(); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeSerializer.java index 63ded4412f72f..bc6dc01f9a88c 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeSerializer.java @@ -21,10 +21,10 @@ import java.time.ZoneId; import java.time.ZonedDateTime; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.JsonSerializer; +import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.ser.std.StdSerializer; final class LocalDateTimeSerializer extends StdSerializer { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeDeserializer.java index 63e01de5a6ca8..fe353e73ee4ac 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeDeserializer.java @@ -20,9 +20,9 @@ import java.time.OffsetDateTime; import java.time.ZonedDateTime; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.JsonDeserializer; final class OffsetDateTimeDeserializer extends JsonDeserializer { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeSerializer.java index 4ae2808c638fe..c15177f45e540 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeSerializer.java @@ -20,10 +20,10 @@ import java.time.OffsetDateTime; import java.time.ZonedDateTime; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.JsonSerializer; +import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.ser.std.StdSerializer; final class OffsetDateTimeSerializer extends StdSerializer { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeDeserializer.java index 4c493b33553fb..e1404387d4647 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeDeserializer.java @@ -18,7 +18,7 @@ import java.time.OffsetTime; -import com.fasterxml.jackson.databind.JsonDeserializer; +import tools.jackson.databind.JsonDeserializer; final class OffsetTimeDeserializer extends com.fasterxml.jackson.datatype.jsr310.deser.OffsetTimeDeserializer { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeSerializer.java index cb2cf4ea203e4..8b3440010d65c 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeSerializer.java @@ -18,7 +18,7 @@ import java.time.OffsetTime; -import com.fasterxml.jackson.databind.JsonSerializer; +import tools.jackson.databind.JsonSerializer; final class OffsetTimeSerializer extends com.fasterxml.jackson.datatype.jsr310.ser.OffsetTimeSerializer { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/TimeModule.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/TimeModule.java index 12c2c3e34e972..542b8d0664b04 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/TimeModule.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/TimeModule.java @@ -24,11 +24,11 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; -import com.fasterxml.jackson.databind.module.SimpleModule; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; -import com.fasterxml.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer; +import tools.jackson.databind.module.SimpleModule; +import tools.jackson.datatype.jsr310.JavaTimeModule; +import tools.jackson.datatype.jsr310.deser.LocalDateDeserializer; +import tools.jackson.datatype.jsr310.ser.LocalDateSerializer; +import tools.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer; import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeDeserializer.java index f1080b83672de..5cb0d277c7966 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeDeserializer.java @@ -18,8 +18,8 @@ import java.time.ZonedDateTime; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer; +import tools.jackson.databind.JsonDeserializer; +import tools.jackson.datatype.jsr310.deser.InstantDeserializer; import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java index c94f686af54f7..5b2a442081ce2 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java @@ -37,7 +37,6 @@ import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicBoolean; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.component.salesforce.AuthenticationType; import org.apache.camel.component.salesforce.SalesforceHttpClient; @@ -59,6 +58,7 @@ import org.eclipse.jetty.util.Fields; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public class SalesforceSession extends ServiceSupport { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java index cb51374fc9d4e..0efc58954f0ba 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/AbstractClientBase.java @@ -36,7 +36,6 @@ import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.component.salesforce.SalesforceHttpClient; @@ -68,6 +67,7 @@ import org.eclipse.jetty.io.Content; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public abstract class AbstractClientBase extends ServiceSupport implements SalesforceSession.SalesforceSessionListener, HttpClientHolder { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java index 158bcdb080d80..56b8c0222746c 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultAnalyticsApiClient.java @@ -24,8 +24,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.SalesforceHttpClient; import org.apache.camel.component.salesforce.SalesforceLoginConfig; import org.apache.camel.component.salesforce.api.NoSuchSObjectException; @@ -47,6 +45,8 @@ import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; /** * Default implementation of {@link org.apache.camel.component.salesforce.internal.client.AnalyticsApiClient}. diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiV2Client.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiV2Client.java index 3fcd74054bd7a..7250fd61767f3 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiV2Client.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiV2Client.java @@ -24,8 +24,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.SalesforceEndpoint; import org.apache.camel.component.salesforce.SalesforceHttpClient; import org.apache.camel.component.salesforce.SalesforceLoginConfig; @@ -44,6 +42,8 @@ import org.eclipse.jetty.client.Response; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; public class DefaultBulkApiV2Client extends AbstractClientBase implements BulkApiV2Client { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java index 58379b2d5e9cc..cf16fd2e125b9 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java @@ -24,11 +24,6 @@ import java.util.Map; import java.util.Optional; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; -import com.fasterxml.jackson.databind.ObjectWriter; -import com.fasterxml.jackson.databind.type.CollectionType; import org.apache.camel.component.salesforce.SalesforceEndpointConfig; import org.apache.camel.component.salesforce.SalesforceHttpClient; import org.apache.camel.component.salesforce.SalesforceLoginConfig; @@ -48,6 +43,11 @@ import org.eclipse.jetty.client.Request; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; +import tools.jackson.databind.ObjectWriter; +import tools.jackson.databind.type.CollectionType; public class DefaultCompositeApiClient extends AbstractClientBase implements CompositeApiClient { @@ -198,7 +198,7 @@ InputStream toJson(final Object obj) throws SalesforceException { byte[] jsonBytes; try { jsonBytes = jsonWriterFor(obj).writeValueAsBytes(obj); - } catch (final JsonProcessingException e) { + } catch (final JacksonException e) { throw new SalesforceException("Unable to serialize given SObjectTree to JSON", e); } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeSObjectCollectionsApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeSObjectCollectionsApiClient.java index 798c251cde732..857c30ae75369 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeSObjectCollectionsApiClient.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeSObjectCollectionsApiClient.java @@ -23,10 +23,6 @@ import java.util.Map; import java.util.Optional; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; -import com.fasterxml.jackson.databind.type.CollectionType; import org.apache.camel.component.salesforce.SalesforceEndpointConfig; import org.apache.camel.component.salesforce.SalesforceHttpClient; import org.apache.camel.component.salesforce.SalesforceLoginConfig; @@ -43,6 +39,10 @@ import org.eclipse.jetty.client.InputStreamRequestContent; import org.eclipse.jetty.client.Request; import org.eclipse.jetty.http.HttpHeader; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectWriter; +import tools.jackson.databind.type.CollectionType; public class DefaultCompositeSObjectCollectionsApiClient extends AbstractClientBase implements CompositeSObjectCollectionsApiClient { @@ -223,7 +223,7 @@ private InputStream toJson(final Object obj) throws SalesforceException { byte[] jsonBytes; try { jsonBytes = jsonWriterFor(obj).writeValueAsBytes(obj); - } catch (final JsonProcessingException e) { + } catch (final JacksonException e) { throw new SalesforceException("Unable to serialize given SObjectTree to JSON", e); } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java index ef428c95184af..5fea212ada681 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java @@ -29,9 +29,6 @@ import java.util.Optional; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.component.salesforce.SalesforceHttpClient; import org.apache.camel.component.salesforce.SalesforceLoginConfig; import org.apache.camel.component.salesforce.api.SalesforceException; @@ -46,6 +43,9 @@ import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.MultiPart; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; public class DefaultRestClient extends AbstractClientBase implements RestClient { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/SalesforceSecurityHandler.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/SalesforceSecurityHandler.java index e2d2d533633c1..9723bbdd452be 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/SalesforceSecurityHandler.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/SalesforceSecurityHandler.java @@ -21,7 +21,6 @@ import java.util.Collections; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.SalesforceHttpClient; import org.apache.camel.component.salesforce.api.SalesforceException; import org.apache.camel.component.salesforce.api.dto.RestError; @@ -42,6 +41,7 @@ import org.eclipse.jetty.http.HttpStatus; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public class SalesforceSecurityHandler implements ProtocolHandler { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java index a06da2bfdcf9d..6db0b8a158a8b 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java @@ -23,11 +23,6 @@ import java.nio.charset.StandardCharsets; import java.util.Map; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.Message; @@ -46,6 +41,11 @@ import org.apache.camel.component.salesforce.api.dto.approval.ApprovalResult; import org.apache.camel.component.salesforce.api.dto.approval.Approvals; import org.apache.camel.component.salesforce.api.utils.JsonUtils; +import tools.jackson.core.JsonFactory; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.component.salesforce.SalesforceConstants.HEADER_SALESFORCE_QUERY_RESULT_TOTAL_SIZE; diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/QueryResultIterator.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/QueryResultIterator.java index 3c0471a1a915b..386df8454648b 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/QueryResultIterator.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/QueryResultIterator.java @@ -24,11 +24,11 @@ import java.util.NoSuchElementException; import java.util.concurrent.CountDownLatch; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.salesforce.api.dto.AbstractQueryRecordsBase; import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase; import org.apache.camel.component.salesforce.internal.client.RestClient; +import tools.jackson.databind.ObjectMapper; public class QueryResultIterator implements Iterator { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java index ac65ef9017dae..fc63c1479558c 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java @@ -21,7 +21,6 @@ import java.util.Collections; import java.util.concurrent.TimeUnit; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelException; import org.apache.camel.component.salesforce.SalesforceEndpointConfig; import org.apache.camel.component.salesforce.api.SalesforceException; @@ -34,6 +33,7 @@ import org.eclipse.jetty.http.HttpStatus; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public class PushTopicHelper { private static final Logger LOG = LoggerFactory.getLogger(PushTopicHelper.class); diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/CompositeApiManualIT.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/CompositeApiManualIT.java index 28874d33ac1df..e6aafaeffa04e 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/CompositeApiManualIT.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/CompositeApiManualIT.java @@ -23,7 +23,6 @@ import java.util.Set; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelExecutionException; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.salesforce.api.dto.AbstractQueryRecordsBase; @@ -42,6 +41,7 @@ import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assumptions.assumeFalse; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LoginConfigHelper.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LoginConfigHelper.java index bd0489951b37e..929864f853c60 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LoginConfigHelper.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LoginConfigHelper.java @@ -25,12 +25,12 @@ import java.util.MissingResourceException; import java.util.ResourceBundle; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.support.jsse.KeyStoreParameters; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.util.ObjectHelper.isNotEmpty; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiManualIT.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiManualIT.java index a71dee5fa3473..f0220ec2537fa 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiManualIT.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/RestApiManualIT.java @@ -30,7 +30,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelExecutionException; import org.apache.camel.Exchange; import org.apache.camel.Processor; @@ -76,6 +75,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.component.salesforce.SalesforceEndpointConfig.EVENT_NAME; import static org.apache.camel.component.salesforce.SalesforceEndpointConfig.EVENT_SCHEMA_ID; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java index 1c86a1d8c4393..3174076f51079 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java @@ -16,11 +16,11 @@ */ package org.apache.camel.component.salesforce.api; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.apache.camel.component.salesforce.dto.generated.MSP; import org.apache.camel.component.salesforce.dto.generated.StringMSP; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/LimitsTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/LimitsTest.java index 1a86de97175c0..dcb316c12e0d3 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/LimitsTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/LimitsTest.java @@ -27,10 +27,10 @@ import java.util.Set; import java.util.stream.Collectors; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.dto.Limits.Usage; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/PlatformEventTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/PlatformEventTest.java index e08af1b29c2a1..b15b012f57e2d 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/PlatformEventTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/PlatformEventTest.java @@ -19,9 +19,9 @@ import java.io.IOException; import java.time.ZonedDateTime; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.entry; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/RecentItemTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/RecentItemTest.java index 7e06a6d37657d..da686d148a5fc 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/RecentItemTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/RecentItemTest.java @@ -18,9 +18,9 @@ import java.io.IOException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsInstanceOf.instanceOf; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/RestErrorTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/RestErrorTest.java index 3891d3f7c5c91..d1d3c4f395746 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/RestErrorTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/RestErrorTest.java @@ -18,10 +18,10 @@ import java.util.Arrays; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestTest.java index b9c37e7ca2004..ce1b51527f649 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestTest.java @@ -18,11 +18,11 @@ import java.util.Collections; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.dto.approval.ApprovalRequest.Action; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.hamcrest.CoreMatchers.sameInstance; import static org.hamcrest.MatcherAssert.assertThat; @@ -72,7 +72,7 @@ public void shouldApplyValuesFromTemplate() { } @Test - public void shouldSerializeAsJson() throws JsonProcessingException { + public void shouldSerializeAsJson() throws JacksonException { final ObjectMapper mapper = JsonUtils.createObjectMapper(); final String json = mapper.writerFor(ApprovalRequest.class).writeValueAsString(sampleRequest); diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestsTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestsTest.java index 558bf8f16a683..6a3da8ee4975c 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestsTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestsTest.java @@ -18,11 +18,11 @@ import java.util.Arrays; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.dto.approval.ApprovalRequest.Action; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -55,7 +55,7 @@ public ApprovalRequestsTest() { } @Test - public void shouldSerializeAsJson() throws JsonProcessingException { + public void shouldSerializeAsJson() throws JacksonException { final String json = "{\"requests\":["// + "{"// + "\"actionType\":\"Submit\","// diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResultTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResultTest.java index 0501d591eb4de..aba99093cc4b6 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResultTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResultTest.java @@ -19,10 +19,10 @@ import java.io.IOException; import java.util.Iterator; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.dto.approval.ApprovalResult.Result; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsCollectionContaining.hasItems; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalsTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalsTest.java index ffeb72c9c02e4..1e7e610b349ec 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalsTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalsTest.java @@ -20,11 +20,11 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.dto.approval.Approvals.Info; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsInstanceOf.instanceOf; @@ -35,7 +35,7 @@ public class ApprovalsTest { @Test - public void shouldDeserialize() throws JsonProcessingException, IOException { + public void shouldDeserialize() throws JacksonException, IOException { final ObjectMapper mapper = JsonUtils.createObjectMapper(); final Object read = mapper.readerFor(Approvals.class).readValue(""" diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchResponseTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchResponseTest.java index 276e836b98002..293bff73aabc4 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchResponseTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchResponseTest.java @@ -20,9 +20,9 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchTest.java index 54c27514c552e..7f398b576303b 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchTest.java @@ -16,13 +16,13 @@ */ package org.apache.camel.component.salesforce.api.dto.composite; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch.Method; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.apache.camel.component.salesforce.dto.generated.Account; import org.apache.camel.component.salesforce.dto.generated.Account_IndustryEnum; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -71,7 +71,7 @@ public SObjectBatchTest() { } @Test - public void shouldSerializeToJson() throws JsonProcessingException { + public void shouldSerializeToJson() throws JacksonException { final String json = "{" + "\"batchRequests\":[" + "{" + "\"method\":\"POST\"," + "\"url\":\"v37.0/sobjects/Account/\"," + "\"richInput\":{" + "\"attributes\":{" + "\"referenceId\":null," + "\"type\":\"Account\"," + "\"url\":null" + "}," diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResponseTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResponseTest.java index ffdbd30a39e8d..e5e30625deff9 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResponseTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResponseTest.java @@ -21,10 +21,10 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.assertj.core.api.Assertions.assertThat; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeTest.java index d967360a311ed..0892b61ad5556 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeTest.java @@ -20,8 +20,6 @@ import java.nio.charset.StandardCharsets; import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.component.salesforce.api.dto.AbstractDescribedSObjectBase; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; import org.apache.camel.component.salesforce.api.utils.JsonUtils; @@ -30,6 +28,8 @@ import org.apache.camel.component.salesforce.dto.generated.Contact; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; import static org.assertj.core.api.Assertions.assertThat; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeResponseTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeResponseTest.java index abea2199f493c..8703bf91802a0 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeResponseTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeResponseTest.java @@ -19,11 +19,11 @@ import java.util.Arrays; import java.util.Collections; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; import org.apache.camel.component.salesforce.api.dto.RestError; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsCollectionContaining.hasItems; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeTest.java index 751a5da9347ce..9ccc45feb006f 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeTest.java @@ -19,15 +19,15 @@ import java.util.Arrays; import java.util.Iterator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.apache.camel.component.salesforce.dto.generated.Account; import org.apache.camel.component.salesforce.dto.generated.Asset; import org.apache.camel.component.salesforce.dto.generated.Contact; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectWriter; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -53,7 +53,7 @@ public void shouldCollectAllObjectTypesInTheTree() { } @Test - public void shouldSerializeToJson() throws JsonProcessingException { + public void shouldSerializeToJson() throws JacksonException { final ObjectMapper mapper = JsonUtils.createObjectMapper(); mapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true); diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/JsonUtilsTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/JsonUtilsTest.java index f389eb4c699b7..6fe63d6170bef 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/JsonUtilsTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/JsonUtilsTest.java @@ -16,14 +16,14 @@ */ package org.apache.camel.component.salesforce.api.utils; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.ObjectSchema; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; import org.apache.camel.component.salesforce.dto.generated.Account; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.module.jsonSchema.jakarta.JsonSchema; +import tools.jackson.module.jsonSchema.jakarta.types.ObjectSchema; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/SalesforceTimeFormatsTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/SalesforceTimeFormatsTest.java index c210ef690aa11..e146cca07b2a7 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/SalesforceTimeFormatsTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/SalesforceTimeFormatsTest.java @@ -29,12 +29,12 @@ import java.util.Date; import java.util.Objects; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.type.TypeFactory; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.type.TypeFactory; import static java.lang.String.format; import static org.assertj.core.api.Assertions.assertThat; @@ -104,7 +104,7 @@ public void shouldDeserializeJson(DateTransferObject dto, String json, Class< @ParameterizedTest @MethodSource("cases") public void shouldSerializeJson(DateTransferObject dto, String json, Class parameterType) - throws JsonProcessingException { + throws JacksonException { String actual = objectMapper.writeValueAsString(dto).replaceAll("000\\+00:00", "000+0000"); String expected = json; assertThat(actual).isEqualTo(expected); diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/ContentVersion.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/ContentVersion.java index bd78c320f1a27..ee9dda73c30fe 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/ContentVersion.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/ContentVersion.java @@ -27,7 +27,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; import jakarta.annotation.Generated; import org.apache.camel.component.salesforce.api.dto.AbstractDescribedSObjectBase; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java index 7ce44aa60cd2e..a65f4b8575978 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Document.java @@ -24,7 +24,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; import jakarta.annotation.Generated; import org.apache.camel.component.salesforce.api.dto.AbstractDescribedSObjectBase; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java index 63a2cffbe7388..52a151acf326a 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/Line_Item__c.java @@ -22,7 +22,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; import org.apache.camel.component.salesforce.api.dto.AbstractDescribedSObjectBase; import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSP.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSP.java index 22cf0e3804f1d..b46c1b26d1eb0 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSP.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/MSP.java @@ -21,8 +21,8 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonValue; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import org.apache.camel.component.salesforce.api.MultiSelectPicklistDeserializer; import org.apache.camel.component.salesforce.api.MultiSelectPicklistSerializer; import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/StringMSP.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/StringMSP.java index fcf438c8d13dc..4b944ea38bc9f 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/StringMSP.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/dto/generated/StringMSP.java @@ -17,8 +17,8 @@ package org.apache.camel.component.salesforce.dto.generated; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; import org.apache.camel.component.salesforce.api.StringMultiSelectPicklistDeserializer; import org.apache.camel.component.salesforce.api.StringMultiSelectPicklistSerializer; import org.apache.camel.component.salesforce.api.dto.AbstractSObjectBase; diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java index a4d2111a689ea..ba63e14f4f955 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/LoginTokenTest.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.salesforce.internal; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.apache.camel.component.salesforce.internal.dto.LoginToken; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml b/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml index c446773de227d..7345ce4ce47a9 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/pom.xml @@ -95,6 +95,12 @@ org.apache.camel camel-salesforce-codegen + + com.github.victools + jsonschema-generator + 4.38.0 + + diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java index d0f5bc7efb075..6fd6ad800ce41 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java @@ -29,7 +29,7 @@ import java.util.stream.Collectors; import java.util.stream.StreamSupport; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.apache.camel.component.salesforce.codegen.GenerateExecution; diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/SchemaMojoManualIT.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/SchemaMojoManualIT.java index dc8b3fecba9b6..83882dadbcf81 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/SchemaMojoManualIT.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/SchemaMojoManualIT.java @@ -19,9 +19,9 @@ import java.io.File; import java.nio.file.Path; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.jsonSchema.jakarta.JsonSchema; -import com.fasterxml.jackson.module.jsonSchema.jakarta.types.ObjectSchema; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.module.jsonSchema.jakarta.JsonSchema; +import tools.jackson.module.jsonSchema.jakarta.types.ObjectSchema; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset.java index 97bb55593b6fc..b7c6820ec2a57 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset.java @@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; import org.apache.camel.component.salesforce.api.utils.AsNestedPropertyResolver; /** diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset_LocalDateTime.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset_LocalDateTime.java index 150c7aace8f08..604c8ba01c121 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset_LocalDateTime.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Asset_LocalDateTime.java @@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; import org.apache.camel.component.salesforce.api.utils.AsNestedPropertyResolver; /** diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java index c9b3ecddf5fdb..2f765fdb17939 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/Case.java @@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; import org.apache.camel.component.salesforce.api.utils.AsNestedPropertyResolver; /** diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java index 2ad1eae570a64..3cdf6d199ffe9 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/ComplexCalculatedFormula.java @@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; import org.apache.camel.component.salesforce.api.utils.AsNestedPropertyResolver; /** diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/With_Reference__c.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/With_Reference__c.java index ba0f050ba10f4..ed208be9d55e6 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/With_Reference__c.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/resources/generated/With_Reference__c.java @@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import tools.jackson.databind.annotation.JsonTypeResolver; import org.apache.camel.component.salesforce.api.utils.AsNestedPropertyResolver; /** diff --git a/components/camel-sap-netweaver/pom.xml b/components/camel-sap-netweaver/pom.xml index 358585db35821..e608f35ff7e39 100644 --- a/components/camel-sap-netweaver/pom.xml +++ b/components/camel-sap-netweaver/pom.xml @@ -46,7 +46,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core @@ -54,7 +54,7 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java index 9ff7fa8cd3d03..d8b8344a2d68b 100644 --- a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java +++ b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java @@ -18,7 +18,6 @@ import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; import org.apache.camel.Producer; @@ -28,6 +27,7 @@ import org.apache.camel.util.URISupport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public class NetWeaverProducer extends DefaultProducer { diff --git a/components/camel-servicenow/camel-servicenow-component/pom.xml b/components/camel-servicenow/camel-servicenow-component/pom.xml index a8222c2066ce9..30c1f5300a67f 100644 --- a/components/camel-servicenow/camel-servicenow-component/pom.xml +++ b/components/camel-servicenow/camel-servicenow-component/pom.xml @@ -71,7 +71,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core @@ -79,19 +79,11 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - - - com.fasterxml.jackson.datatype - jackson-datatype-jdk8 - - - com.fasterxml.jackson.jakarta.rs + tools.jackson.jakarta.rs jackson-jakarta-rs-json-provider diff --git a/components/camel-servicenow/camel-servicenow-component/src/generated/java/org/apache/camel/component/servicenow/ServiceNowComponentConfigurer.java b/components/camel-servicenow/camel-servicenow-component/src/generated/java/org/apache/camel/component/servicenow/ServiceNowComponentConfigurer.java index c5c5daa151af6..ba4fe037c3f97 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/generated/java/org/apache/camel/component/servicenow/ServiceNowComponentConfigurer.java +++ b/components/camel-servicenow/camel-servicenow-component/src/generated/java/org/apache/camel/component/servicenow/ServiceNowComponentConfigurer.java @@ -66,7 +66,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "key": getOrCreateConfiguration(target).setKey(property(camelContext, java.lang.Boolean.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; - case "mapper": getOrCreateConfiguration(target).setMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; + case "mapper": getOrCreateConfiguration(target).setMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; case "models": getOrCreateConfiguration(target).setModels(property(camelContext, java.util.Map.class, value)); return true; case "oauthclientid": case "oauthClientId": getOrCreateConfiguration(target).setOauthClientId(property(camelContext, java.lang.String.class, value)); return true; @@ -158,7 +158,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "key": return java.lang.Boolean.class; case "lazystartproducer": case "lazyStartProducer": return boolean.class; - case "mapper": return com.fasterxml.jackson.databind.ObjectMapper.class; + case "mapper": return tools.jackson.databind.ObjectMapper.class; case "models": return java.util.Map.class; case "oauthclientid": case "oauthClientId": return java.lang.String.class; diff --git a/components/camel-servicenow/camel-servicenow-component/src/generated/java/org/apache/camel/component/servicenow/ServiceNowEndpointConfigurer.java b/components/camel-servicenow/camel-servicenow-component/src/generated/java/org/apache/camel/component/servicenow/ServiceNowEndpointConfigurer.java index 6dfc93ee7dafb..3c436100f388f 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/generated/java/org/apache/camel/component/servicenow/ServiceNowEndpointConfigurer.java +++ b/components/camel-servicenow/camel-servicenow-component/src/generated/java/org/apache/camel/component/servicenow/ServiceNowEndpointConfigurer.java @@ -54,7 +54,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "key": target.getConfiguration().setKey(property(camelContext, java.lang.Boolean.class, value)); return true; case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; - case "mapper": target.getConfiguration().setMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; + case "mapper": target.getConfiguration().setMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; case "models": target.getConfiguration().setModels(property(camelContext, java.util.Map.class, value)); return true; case "oauthclientid": case "oauthClientId": target.getConfiguration().setOauthClientId(property(camelContext, java.lang.String.class, value)); return true; @@ -139,7 +139,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "key": return java.lang.Boolean.class; case "lazystartproducer": case "lazyStartProducer": return boolean.class; - case "mapper": return com.fasterxml.jackson.databind.ObjectMapper.class; + case "mapper": return tools.jackson.databind.ObjectMapper.class; case "models": return java.util.Map.class; case "oauthclientid": case "oauthClientId": return java.lang.String.class; diff --git a/components/camel-servicenow/camel-servicenow-component/src/generated/resources/META-INF/org/apache/camel/component/servicenow/servicenow.json b/components/camel-servicenow/camel-servicenow-component/src/generated/resources/META-INF/org/apache/camel/component/servicenow/servicenow.json index 69593f4ba4d4c..6a9f799bc4171 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/generated/resources/META-INF/org/apache/camel/component/servicenow/servicenow.json +++ b/components/camel-servicenow/camel-servicenow-component/src/generated/resources/META-INF/org/apache/camel/component/servicenow/servicenow.json @@ -57,7 +57,7 @@ "dateTimeFormat": { "index": 29, "kind": "property", "displayName": "Date Time Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "yyyy-MM-dd HH:mm:ss", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The date-time format used for Json serialization\/deserialization" }, "httpClientPolicy": { "index": 30, "kind": "property", "displayName": "Http Client Policy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.cxf.transports.http.configuration.HTTPClientPolicy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "To configure http-client" }, "instanceName": { "index": 31, "kind": "property", "displayName": "Instance Name", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The ServiceNow instance name" }, - "mapper": { "index": 32, "kind": "property", "displayName": "Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Sets Jackson's ObjectMapper to use for request\/reply" }, + "mapper": { "index": 32, "kind": "property", "displayName": "Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Sets Jackson's ObjectMapper to use for request\/reply" }, "proxyAuthorizationPolicy": { "index": 33, "kind": "property", "displayName": "Proxy Authorization Policy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.cxf.configuration.security.ProxyAuthorizationPolicy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "To configure proxy authentication" }, "retrieveTargetRecordOnImport": { "index": 34, "kind": "property", "displayName": "Retrieve Target Record On Import", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Set this parameter to true to retrieve the target record when using import set api. The import set result is then replaced by the target record" }, "timeFormat": { "index": 35, "kind": "property", "displayName": "Time Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HH:mm:ss", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The time format used for Json serialization\/deserialization" }, @@ -170,7 +170,7 @@ "dateFormat": { "index": 27, "kind": "parameter", "displayName": "Date Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "yyyy-MM-dd", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The date format used for Json serialization\/deserialization" }, "dateTimeFormat": { "index": 28, "kind": "parameter", "displayName": "Date Time Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "yyyy-MM-dd HH:mm:ss", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The date-time format used for Json serialization\/deserialization" }, "httpClientPolicy": { "index": 29, "kind": "parameter", "displayName": "Http Client Policy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.cxf.transports.http.configuration.HTTPClientPolicy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "To configure http-client" }, - "mapper": { "index": 30, "kind": "parameter", "displayName": "Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Sets Jackson's ObjectMapper to use for request\/reply" }, + "mapper": { "index": 30, "kind": "parameter", "displayName": "Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Sets Jackson's ObjectMapper to use for request\/reply" }, "proxyAuthorizationPolicy": { "index": 31, "kind": "parameter", "displayName": "Proxy Authorization Policy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.cxf.configuration.security.ProxyAuthorizationPolicy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "To configure proxy authentication" }, "retrieveTargetRecordOnImport": { "index": 32, "kind": "parameter", "displayName": "Retrieve Target Record On Import", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Set this parameter to true to retrieve the target record when using import set api. The import set result is then replaced by the target record" }, "timeFormat": { "index": 33, "kind": "parameter", "displayName": "Time Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HH:mm:ss", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The time format used for Json serialization\/deserialization" }, diff --git a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/AbstractServiceNowProcessor.java b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/AbstractServiceNowProcessor.java index 27ba88f6935f2..734bb6f52cc3c 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/AbstractServiceNowProcessor.java +++ b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/AbstractServiceNowProcessor.java @@ -26,13 +26,13 @@ import jakarta.ws.rs.core.HttpHeaders; import jakarta.ws.rs.core.Response; -import com.fasterxml.jackson.databind.JavaType; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.Processor; import org.apache.camel.util.ObjectHelper; +import tools.jackson.databind.JavaType; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public abstract class AbstractServiceNowProcessor implements Processor { @@ -113,7 +113,7 @@ protected AbstractServiceNowProcessor setBody(Message message, Class model, R Map responseAttributes = null; if (root != null) { - Iterator> fields = root.fields(); + Iterator> fields = root.properties().iterator(); while (fields.hasNext()) { final Map.Entry entry = fields.next(); final String key = entry.getKey(); @@ -175,7 +175,7 @@ protected Object unwrap(JsonNode node, Class model) throws IOException { // expected element type result = mapper.treeToValue(node, List.class); } else { - result = mapper.readValue(node.traverse(), javaTypeCache.get(model)); + result = mapper.convertValue(node, javaTypeCache.get(model)); } } else { result = mapper.treeToValue(node, model); diff --git a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java index 85ff2116eccfa..e1469ac956aa6 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java +++ b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowClient.java @@ -27,7 +27,6 @@ import javax.net.ssl.SSLContext; -import com.fasterxml.jackson.jakarta.rs.json.JacksonJsonProvider; import org.apache.camel.CamelContext; import org.apache.camel.Message; import org.apache.camel.RuntimeCamelException; @@ -42,6 +41,8 @@ import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.jakarta.rs.json.JacksonJsonProvider; public final class ServiceNowClient { private static final Logger LOGGER = LoggerFactory.getLogger(ServiceNowClient.class); @@ -51,11 +52,12 @@ public final class ServiceNowClient { public ServiceNowClient(CamelContext camelContext, ServiceNowConfiguration configuration) { this.configuration = configuration; + JsonMapper jm = (JsonMapper) configuration.getOrCreateMapper(); this.client = WebClient.create( configuration.getApiUrl(), Arrays.asList( new AuthenticationRequestFilter(configuration), - new JacksonJsonProvider(configuration.getOrCreateMapper())), + new JacksonJsonProvider(jm)), true); configureRequestContext(client); diff --git a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowConfiguration.java b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowConfiguration.java index 23de0c9442bbf..90eb7335eab9e 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowConfiguration.java +++ b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowConfiguration.java @@ -16,25 +16,11 @@ */ package org.apache.camel.component.servicenow; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.Map; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; -import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; -import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; -import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import org.apache.camel.RuntimeCamelException; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; @@ -43,6 +29,9 @@ import org.apache.camel.util.ObjectHelper; import org.apache.cxf.configuration.security.ProxyAuthorizationPolicy; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; @UriParams public class ServiceNowConfiguration implements Cloneable { @@ -484,23 +473,11 @@ public ObjectMapper getOrCreateMapper() { final DateTimeFormatter timeFormat = DateTimeFormatter.ofPattern(getTimeFormat()); final DateTimeFormatter dateTimeFormat = DateTimeFormatter.ofPattern(getDateTimeFormat()); - this.mapper = new ObjectMapper() - .registerModule(new Jdk8Module()) - .registerModule(new JavaTimeModule() - .addSerializer(LocalDate.class, new LocalDateSerializer(dateFormat)) - .addDeserializer(LocalDate.class, new LocalDateDeserializer(dateFormat)) - .addSerializer(LocalTime.class, new LocalTimeSerializer(timeFormat)) - .addDeserializer(LocalTime.class, new LocalTimeDeserializer(timeFormat)) - .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormat)) - .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormat))) - .configure( - SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, - false) - .configure( - DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, - false) - .setSerializationInclusion( - JsonInclude.Include.NON_NULL); + this.mapper = JsonMapper.builder() + .disable( + DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL)) + .build(); } return mapper; diff --git a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtension.java b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtension.java index 02164d7232802..0fa41ab9f205e 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtension.java +++ b/components/camel-servicenow/camel-servicenow-component/src/main/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtension.java @@ -36,10 +36,6 @@ import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.CamelContext; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.extension.MetaDataExtension; @@ -51,6 +47,10 @@ import org.apache.camel.util.StringHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; /** * An implementation of the MetaData extension {@link MetaDataExtension} that retrieve information about ServiceNow @@ -466,7 +466,7 @@ private void processDictionaryNode(MetaContext context, ObjectNode root, JsonNod required.add(id); } - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeCamelException(e); } finally { context.getStack().pop(); @@ -519,7 +519,7 @@ private List getObjectHierarchy(MetaContext context) throws Exception { private void processResult(JsonNode node, Consumer consumer) { if (node.isArray()) { - Iterator it = node.elements(); + Iterator it = node.iterator(); while (it.hasNext()) { consumer.accept(it.next()); } @@ -532,7 +532,7 @@ private Optional findResultNode(Response response) { if (ObjectHelper.isNotEmpty(response.getHeaderString(HttpHeaders.CONTENT_TYPE))) { JsonNode root = response.readEntity(JsonNode.class); if (root != null) { - Iterator> fields = root.fields(); + Iterator> fields = root.properties().iterator(); while (fields.hasNext()) { final Map.Entry entry = fields.next(); final String key = entry.getKey(); diff --git a/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowIT.java b/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowIT.java index 40d9d765f9597..8b022a30aea8d 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowIT.java +++ b/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowIT.java @@ -23,8 +23,6 @@ import java.util.Map; import java.util.UUID; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelExecutionException; import org.apache.camel.ProducerTemplate; import org.apache.camel.builder.RouteBuilder; @@ -32,6 +30,8 @@ import org.apache.camel.component.servicenow.model.Incident; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtensionIT.java b/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtensionIT.java index 0fa69cab822cf..923ff066acec0 100644 --- a/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtensionIT.java +++ b/components/camel-servicenow/camel-servicenow-component/src/test/java/org/apache/camel/component/servicenow/ServiceNowMetaDataExtensionIT.java @@ -18,13 +18,13 @@ import java.util.Map; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.extension.MetaDataExtension; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-servicenow/camel-servicenow-maven-plugin/src/main/java/org/apache/camel/maven/CamelServiceNowGenerateMojo.java b/components/camel-servicenow/camel-servicenow-maven-plugin/src/main/java/org/apache/camel/maven/CamelServiceNowGenerateMojo.java index 279a05a644a32..e867da9c3d252 100644 --- a/components/camel-servicenow/camel-servicenow-maven-plugin/src/main/java/org/apache/camel/maven/CamelServiceNowGenerateMojo.java +++ b/components/camel-servicenow/camel-servicenow-maven-plugin/src/main/java/org/apache/camel/maven/CamelServiceNowGenerateMojo.java @@ -35,8 +35,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ArrayNode; import com.squareup.javapoet.AnnotationSpec; import com.squareup.javapoet.FieldSpec; import com.squareup.javapoet.JavaFile; @@ -54,6 +52,8 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.ArrayNode; /** * Goal to generate DTOs for ServiceNow objects @@ -197,7 +197,7 @@ private void generateBean(String name, JsonNode schema) throws MojoExecutionExce .addMember("value", "$L", "JsonInclude.Include.NON_NULL") .build()); - schema.get("properties").fields().forEachRemaining( + schema.get("properties").properties().forEach( entry -> generateBeanProperty(typeBuilder, schema, entry.getKey(), entry.getValue())); JavaFile.builder(packageName, typeBuilder.build()) diff --git a/components/camel-splunk-hec/pom.xml b/components/camel-splunk-hec/pom.xml index 84c893d926443..41e086f429434 100644 --- a/components/camel-splunk-hec/pom.xml +++ b/components/camel-splunk-hec/pom.xml @@ -38,7 +38,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java b/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java index 09c6665ac9e07..0da2f89be3700 100644 --- a/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java +++ b/components/camel-splunk-hec/src/main/java/org/apache/camel/component/splunkhec/SplunkHECProducer.java @@ -21,7 +21,6 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.support.DefaultProducer; @@ -38,6 +37,7 @@ import org.apache.hc.core5.http.io.entity.EntityTemplate; import org.apache.hc.core5.http.message.StatusLine; import org.apache.hc.core5.ssl.SSLContextBuilder; +import tools.jackson.databind.ObjectMapper; /** * The Splunk HEC producer. diff --git a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/pom.xml b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/pom.xml index 6995bb67ac160..337f491c9a24d 100644 --- a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/pom.xml +++ b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/pom.xml @@ -57,6 +57,11 @@ test + + tools.jackson.core + jackson-databind + + org.apache.camel diff --git a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/main/java/org/apache/camel/component/springai/tools/SpringAiToolsEndpoint.java b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/main/java/org/apache/camel/component/springai/tools/SpringAiToolsEndpoint.java index 21e1209f1544e..ff33477f8758d 100644 --- a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/main/java/org/apache/camel/component/springai/tools/SpringAiToolsEndpoint.java +++ b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/main/java/org/apache/camel/component/springai/tools/SpringAiToolsEndpoint.java @@ -21,9 +21,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; @@ -38,6 +35,10 @@ import org.springframework.ai.tool.ToolCallback; import org.springframework.ai.tool.function.FunctionToolCallback; import org.springframework.ai.tool.metadata.ToolMetadata; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; import static org.apache.camel.component.springai.tools.SpringAiTools.SCHEME; @@ -47,7 +48,7 @@ category = { Category.AI }) public class SpringAiToolsEndpoint extends DefaultEndpoint { - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = JsonMapper.builder().build(); @Metadata(required = true) @UriPath(description = "The tool id") diff --git a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/test/java/org/apache/camel/component/springai/tools/JsonSchemaTest.java b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/test/java/org/apache/camel/component/springai/tools/JsonSchemaTest.java index c9b961fa6d0a3..d10f0ecd7445d 100644 --- a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/test/java/org/apache/camel/component/springai/tools/JsonSchemaTest.java +++ b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/src/test/java/org/apache/camel/component/springai/tools/JsonSchemaTest.java @@ -19,11 +19,11 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Consumer; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-stitch/pom.xml b/components/camel-stitch/pom.xml index fd744e2ca0af9..e7a486c6d4334 100644 --- a/components/camel-stitch/pom.xml +++ b/components/camel-stitch/pom.xml @@ -42,7 +42,7 @@ camel-support - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-stitch/src/main/java/org/apache/camel/component/stitch/client/JsonUtils.java b/components/camel-stitch/src/main/java/org/apache/camel/component/stitch/client/JsonUtils.java index b24749c30228a..d7c44e95c27d7 100644 --- a/components/camel-stitch/src/main/java/org/apache/camel/component/stitch/client/JsonUtils.java +++ b/components/camel-stitch/src/main/java/org/apache/camel/component/stitch/client/JsonUtils.java @@ -18,9 +18,9 @@ import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JacksonException; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.ObjectMapper; public final class JsonUtils { @@ -32,7 +32,7 @@ private JsonUtils() { public static String convertMapToJson(final Map inputMap) { try { return MAPPER.writeValueAsString(inputMap); - } catch (JsonProcessingException exception) { + } catch (JacksonException exception) { throw new RuntimeException("Error occurred writing data map to JSON.", exception); } } @@ -41,7 +41,7 @@ public static Map convertJsonToMap(final String jsonString) { try { return MAPPER.readValue(jsonString, new TypeReference>() { }); - } catch (JsonProcessingException exception) { + } catch (JacksonException exception) { throw new RuntimeException("Error occurred writing JSON to Map.", exception); } } diff --git a/components/camel-stitch/src/test/java/org/apache/camel/component/stitch/client/models/StitchRequestBodyTest.java b/components/camel-stitch/src/test/java/org/apache/camel/component/stitch/client/models/StitchRequestBodyTest.java index 39a6e2db2ebed..36744c5757e01 100644 --- a/components/camel-stitch/src/test/java/org/apache/camel/component/stitch/client/models/StitchRequestBodyTest.java +++ b/components/camel-stitch/src/test/java/org/apache/camel/component/stitch/client/models/StitchRequestBodyTest.java @@ -20,9 +20,9 @@ import java.util.LinkedHashMap; import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -30,7 +30,7 @@ class StitchRequestBodyTest { @Test - public void testNormalRequestBodyToJson() throws JsonProcessingException { + public void testNormalRequestBodyToJson() throws JacksonException { final StitchMessage message1 = StitchMessage.builder() .withData("id", 2) .withData("name", "Jake") diff --git a/components/camel-stripe/pom.xml b/components/camel-stripe/pom.xml index 37ff1a417c63f..24a35fb79f145 100644 --- a/components/camel-stripe/pom.xml +++ b/components/camel-stripe/pom.xml @@ -51,7 +51,7 @@ ${stripe-java-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-stripe/src/main/java/org/apache/camel/component/stripe/StripeProducer.java b/components/camel-stripe/src/main/java/org/apache/camel/component/stripe/StripeProducer.java index d88a5649c8fc8..85d83ef39efdc 100644 --- a/components/camel-stripe/src/main/java/org/apache/camel/component/stripe/StripeProducer.java +++ b/components/camel-stripe/src/main/java/org/apache/camel/component/stripe/StripeProducer.java @@ -19,12 +19,12 @@ import java.util.Collections; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import com.stripe.Stripe; import com.stripe.model.*; import org.apache.camel.Exchange; import org.apache.camel.support.DefaultProducer; import org.apache.camel.util.ObjectHelper; +import tools.jackson.databind.ObjectMapper; public class StripeProducer extends DefaultProducer { diff --git a/components/camel-swift/pom.xml b/components/camel-swift/pom.xml index 43f00488a7aae..df88bc49ebf21 100644 --- a/components/camel-swift/pom.xml +++ b/components/camel-swift/pom.xml @@ -69,12 +69,12 @@ test - com.fasterxml.jackson.core + tools.jackson.core jackson-core test - com.fasterxml.jackson.core + tools.jackson.core jackson-databind test diff --git a/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mt/SpringSwiftMtDataFormatTest.java b/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mt/SpringSwiftMtDataFormatTest.java index f089029881a87..e0d1cc6d18632 100644 --- a/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mt/SpringSwiftMtDataFormatTest.java +++ b/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mt/SpringSwiftMtDataFormatTest.java @@ -20,7 +20,6 @@ import java.nio.file.Files; import java.nio.file.Paths; -import com.fasterxml.jackson.databind.ObjectMapper; import com.prowidesoftware.swift.model.mt.mt1xx.MT103; import com.prowidesoftware.swift.model.mt.mt5xx.MT515; import org.apache.camel.component.mock.MockEndpoint; @@ -28,6 +27,7 @@ import org.junit.jupiter.api.Test; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; diff --git a/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mt/SwiftMtDataFormatTest.java b/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mt/SwiftMtDataFormatTest.java index c4e88c499498e..8d76bd78153fd 100644 --- a/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mt/SwiftMtDataFormatTest.java +++ b/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mt/SwiftMtDataFormatTest.java @@ -20,7 +20,6 @@ import java.nio.file.Files; import java.nio.file.Paths; -import com.fasterxml.jackson.databind.ObjectMapper; import com.prowidesoftware.swift.model.mt.mt1xx.MT103; import com.prowidesoftware.swift.model.mt.mt5xx.MT515; import org.apache.camel.builder.RouteBuilder; @@ -29,6 +28,7 @@ import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; diff --git a/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mx/SpringSwiftMxDataFormatTest.java b/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mx/SpringSwiftMxDataFormatTest.java index 01415a6833968..1e7a6c2f7fd88 100644 --- a/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mx/SpringSwiftMxDataFormatTest.java +++ b/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mx/SpringSwiftMxDataFormatTest.java @@ -23,7 +23,6 @@ import java.nio.file.Files; import java.nio.file.Paths; -import com.fasterxml.jackson.databind.ObjectMapper; import com.prowidesoftware.swift.model.mx.MxCamt04800103; import com.prowidesoftware.swift.model.mx.MxPacs00800107; import com.prowidesoftware.swift.model.mx.sys.MxXsys01100102; @@ -33,6 +32,7 @@ import org.junit.jupiter.api.Test; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mx/SwiftMxDataFormatTest.java b/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mx/SwiftMxDataFormatTest.java index d7182bf80c380..c004c0c4f35cc 100644 --- a/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mx/SwiftMxDataFormatTest.java +++ b/components/camel-swift/src/test/java/org/apache/camel/dataformat/swift/mx/SwiftMxDataFormatTest.java @@ -23,7 +23,6 @@ import java.nio.file.Files; import java.nio.file.Paths; -import com.fasterxml.jackson.databind.ObjectMapper; import com.prowidesoftware.swift.model.mx.MxCamt04800103; import com.prowidesoftware.swift.model.mx.MxPacs00800107; import com.prowidesoftware.swift.model.mx.MxReadConfiguration; @@ -36,6 +35,7 @@ import org.apache.commons.io.IOUtils; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/components/camel-tahu/pom.xml b/components/camel-tahu/pom.xml index a37e2d02035a7..d36b72dbbbf01 100644 --- a/components/camel-tahu/pom.xml +++ b/components/camel-tahu/pom.xml @@ -59,7 +59,7 @@ commons-io - com.fasterxml.jackson.core + tools.jackson.core * @@ -82,7 +82,7 @@ commons-io - com.fasterxml.jackson.core + tools.jackson.core * @@ -105,7 +105,7 @@ commons-io - com.fasterxml.jackson.core + tools.jackson.core * @@ -124,7 +124,7 @@ ${paho-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind @@ -194,7 +194,7 @@ commons-io - com.fasterxml.jackson.core + tools.jackson.core * diff --git a/components/camel-tahu/src/main/java/org/apache/camel/component/tahu/handlers/TahuEdgeClientCallback.java b/components/camel-tahu/src/main/java/org/apache/camel/component/tahu/handlers/TahuEdgeClientCallback.java index 280fafb95cd71..a351a9ee3c222 100644 --- a/components/camel-tahu/src/main/java/org/apache/camel/component/tahu/handlers/TahuEdgeClientCallback.java +++ b/components/camel-tahu/src/main/java/org/apache/camel/component/tahu/handlers/TahuEdgeClientCallback.java @@ -18,7 +18,6 @@ import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.RuntimeCamelException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.tahu.SparkplugParsingException; @@ -42,6 +41,7 @@ import org.slf4j.LoggerFactory; import org.slf4j.Marker; import org.slf4j.MarkerFactory; +import tools.jackson.databind.ObjectMapper; class TahuEdgeClientCallback implements ClientCallback { diff --git a/components/camel-telegram/pom.xml b/components/camel-telegram/pom.xml index dc230418d8ace..16139e7578f8f 100644 --- a/components/camel-telegram/pom.xml +++ b/components/camel-telegram/pom.xml @@ -43,7 +43,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core @@ -53,7 +53,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind @@ -61,10 +61,6 @@ com.fasterxml.jackson.core jackson-annotations - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramWebhookProcessor.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramWebhookProcessor.java index 3479555b58b2a..5d8379f1efb89 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramWebhookProcessor.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramWebhookProcessor.java @@ -18,7 +18,6 @@ import java.io.InputStream; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.AsyncCallback; import org.apache.camel.AsyncProcessor; import org.apache.camel.Exchange; @@ -26,6 +25,7 @@ import org.apache.camel.component.telegram.model.Update; import org.apache.camel.support.AsyncProcessorConverterHelper; import org.apache.camel.support.AsyncProcessorSupport; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.component.telegram.util.TelegramMessageHelper.populateExchange; diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java index bd2269ad6ea40..1817af60d2fd3 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/IncomingMessage.java @@ -23,10 +23,10 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import org.apache.camel.component.telegram.model.payments.RefundedPayment; import org.apache.camel.component.telegram.model.payments.SuccessfulPayment; +import tools.jackson.databind.annotation.JsonDeserialize; +import tools.jackson.databind.annotation.JsonSerialize; /** * A message that is exchanged with the Telegram network. diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/MessageResult.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/MessageResult.java index cbda17a43bcc1..a4ed6f8f67037 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/MessageResult.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/MessageResult.java @@ -20,9 +20,9 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonSetter; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; @JsonIgnoreProperties(ignoreUnknown = true) public class MessageResult implements Serializable { @@ -55,7 +55,7 @@ public void setMessage(IncomingMessage message) { } @JsonSetter("result") - public void setResult(JsonNode result) throws JsonProcessingException { + public void setResult(JsonNode result) throws JacksonException { if (result != null) { if (result.isBoolean()) { this.result = result.asBoolean(); diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/ReplyMarkup.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/ReplyMarkup.java index 30460c4d6dbb9..88a0b494fb4a3 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/ReplyMarkup.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/ReplyMarkup.java @@ -16,16 +16,16 @@ */ package org.apache.camel.component.telegram.model; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.RuntimeCamelException; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public interface ReplyMarkup { default String toJson() { try { return new ObjectMapper().writeValueAsString(this); - } catch (final JsonProcessingException e) { + } catch (final JacksonException e) { throw new RuntimeCamelException("Object conversion failed."); } } diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/UnixTimestampDeserializer.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/UnixTimestampDeserializer.java index 0f156fb89cdb4..5386a94f5fa7d 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/UnixTimestampDeserializer.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/UnixTimestampDeserializer.java @@ -16,24 +16,23 @@ */ package org.apache.camel.component.telegram.model; -import java.io.IOException; import java.time.Instant; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.ValueDeserializer; /** * A deserializer for a unix timestamp. */ -public class UnixTimestampDeserializer extends JsonDeserializer { +public class UnixTimestampDeserializer extends ValueDeserializer { private Logger log = LoggerFactory.getLogger(getClass()); @Override - public Instant deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + public Instant deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) { try { long unixTimestamp = Long.parseLong(jsonParser.getText()); diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/UnixTimestampSerializer.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/UnixTimestampSerializer.java index a5ea82ab6bac6..c81a7464b854f 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/UnixTimestampSerializer.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/UnixTimestampSerializer.java @@ -16,20 +16,19 @@ */ package org.apache.camel.component.telegram.model; -import java.io.IOException; import java.time.Instant; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; -import com.fasterxml.jackson.databind.SerializerProvider; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; /** * A serializer for {@link Instant} compatible with {@link UnixTimestampDeserializer}. */ -public class UnixTimestampSerializer extends JsonSerializer { +public class UnixTimestampSerializer extends ValueSerializer { @Override - public void serialize(Instant value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + public void serialize(Instant value, JsonGenerator gen, SerializationContext serializers) { gen.writeNumber(value.getEpochSecond()); } diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/payments/SuccessfulPayment.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/payments/SuccessfulPayment.java index 69fbfd9ef6ef9..0c8009658f41d 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/payments/SuccessfulPayment.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/model/payments/SuccessfulPayment.java @@ -45,10 +45,10 @@ public class SuccessfulPayment implements Serializable { private Integer subscriptionExpirationDate; @JsonProperty("is_recurring") - private boolean isRecurring; + private Boolean isRecurring; @JsonProperty("is_first_recurring") - private boolean isFirstRecurring; + private Boolean isFirstRecurring; @JsonProperty("shipping_option_id") private String shippingOptionId; @@ -63,7 +63,7 @@ public class SuccessfulPayment implements Serializable { private String providerPaymentChargeId; public SuccessfulPayment(String currency, Integer totalAmount, String invoicePayload, - Integer subscriptionExpirationDate, boolean isRecurring, boolean isFirstRecurring, + Integer subscriptionExpirationDate, Boolean isRecurring, Boolean isFirstRecurring, String shippingOptionId, OrderInfo orderInfo, String telegramPaymentChargeId, String providerPaymentChargeId) { this.currency = currency; @@ -113,19 +113,19 @@ public void setSubscriptionExpirationDate(Integer subscriptionExpirationDate) { this.subscriptionExpirationDate = subscriptionExpirationDate; } - public boolean isRecurring() { + public Boolean isRecurring() { return isRecurring; } - public void setRecurring(boolean recurring) { + public void setRecurring(Boolean recurring) { isRecurring = recurring; } - public boolean isFirstRecurring() { + public Boolean isFirstRecurring() { return isFirstRecurring; } - public void setFirstRecurring(boolean firstRecurring) { + public void setFirstRecurring(Boolean firstRecurring) { isFirstRecurring = firstRecurring; } diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramApiClient.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramApiClient.java index ee6056d3ad5fb..c1198d6871b21 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramApiClient.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramApiClient.java @@ -18,7 +18,7 @@ import java.net.http.HttpClient; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; record TelegramApiClient(HttpClient client, ObjectMapper mapper, String baseUri, int bufferSize) { } diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramAsyncHandler.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramAsyncHandler.java index 3b180356d1a8e..93f5a01e41e1b 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramAsyncHandler.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramAsyncHandler.java @@ -25,7 +25,6 @@ import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; @@ -34,6 +33,7 @@ import org.apache.camel.util.IOHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public class TelegramAsyncHandler { private static final Logger LOG = LoggerFactory.getLogger(TelegramAsyncHandler.class); diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramHandlerRegistry.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramHandlerRegistry.java index 314835d171699..3e3d99e1b707d 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramHandlerRegistry.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramHandlerRegistry.java @@ -20,10 +20,10 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.telegram.TelegramMessage; import org.apache.camel.component.telegram.model.MessageResult; +import tools.jackson.core.JacksonException; final class TelegramHandlerRegistry { private final Map, TelegramMessageHandler> handlers; @@ -86,7 +86,7 @@ protected void addBody(TelegramMessage message) { try { final String body = mapper.writeValueAsString(message); bodyPublisher.addBodyPart(new TelegramBodyPublisher.SingleBodyPart(body)); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeCamelException("Could not serialize " + message); } } diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramMessageHandler.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramMessageHandler.java index fea04895e7ff9..5126db5dd3175 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramMessageHandler.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramMessageHandler.java @@ -21,11 +21,11 @@ import java.net.http.HttpResponse; import java.util.concurrent.ExecutionException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.component.telegram.TelegramMessage; import org.apache.camel.component.telegram.model.MessageResult; +import tools.jackson.databind.ObjectMapper; abstract class TelegramMessageHandler { protected final ObjectMapper mapper; diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java index e96a3bb184f58..267d5152d4a69 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/service/TelegramServiceRestBotAPIAdapter.java @@ -25,8 +25,6 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; @@ -72,6 +70,8 @@ import org.apache.camel.util.URISupport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; /** * Adapts the {@code RestBotAPI} to the {@code TelegramService} interface. @@ -168,7 +168,7 @@ T sendSyncRequest(final HttpRequest request, Class resultType) { + response.body(), response.statusCode(), response.body()); } - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeCamelException( "Could not parse the response from " + request.method() + " " + request.uri(), e); } catch (IOException e) { diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/model/SendChatActionMessageTest.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/model/SendChatActionMessageTest.java index 4e4b50906ab5b..239c2ba22128c 100644 --- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/model/SendChatActionMessageTest.java +++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/model/SendChatActionMessageTest.java @@ -16,9 +16,9 @@ */ package org.apache.camel.component.telegram.model; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.assertj.core.api.Assertions.assertThat; @@ -30,7 +30,7 @@ class SendChatActionMessageTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - void testActionSerializesToJson() throws JsonProcessingException { + void testActionSerializesToJson() throws JacksonException { SendChatActionMessage message = new SendChatActionMessage(SendChatActionMessage.Action.TYPING); message.setChatId("123456"); message.setMessageThreadId(42); diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramMockRoutes.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramMockRoutes.java index 66645cf688c58..c41c151955323 100644 --- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramMockRoutes.java +++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramMockRoutes.java @@ -23,7 +23,6 @@ import java.util.Map; import java.util.concurrent.TimeUnit; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.Processor; @@ -31,6 +30,7 @@ import org.awaitility.Awaitility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; public class TelegramMockRoutes extends RouteBuilder { private static final Logger LOG = LoggerFactory.getLogger(TelegramMockRoutes.class); diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestSupport.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestSupport.java index 955437ea1fb7c..c903309cbf303 100644 --- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestSupport.java +++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestSupport.java @@ -20,7 +20,6 @@ import java.io.InputStream; import java.util.Arrays; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.component.telegram.TelegramComponent; import org.apache.camel.component.telegram.model.InlineKeyboardButton; @@ -29,6 +28,7 @@ import org.apache.camel.test.AvailablePortFinder; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.BeforeAll; +import tools.jackson.databind.ObjectMapper; /** * A support test class for Telegram tests. diff --git a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java index 1349a224f28ec..1d4be03bfc5b8 100644 --- a/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java +++ b/components/camel-telegram/src/test/java/org/apache/camel/component/telegram/util/TelegramTestUtil.java @@ -23,10 +23,10 @@ import java.io.Reader; import java.nio.charset.StandardCharsets; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.RuntimeCamelException; import org.apache.camel.util.IOHelper; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; /** * Utility functions for telegram tests. @@ -90,7 +90,7 @@ public static String stringResource(String path) { public static String serialize(Object result) { try { return new ObjectMapper().writeValueAsString(result); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeCamelException(e); } } diff --git a/components/camel-telemetry-dev/pom.xml b/components/camel-telemetry-dev/pom.xml index 2bf4180f084cf..98ca225216284 100644 --- a/components/camel-telemetry-dev/pom.xml +++ b/components/camel-telemetry-dev/pom.xml @@ -44,9 +44,9 @@ camel-telemetry - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson2-version} + ${jackson-version} org.apache.camel diff --git a/components/camel-telemetry-dev/src/main/java/org/apache/camel/telemetrydev/DevTraceFormat.java b/components/camel-telemetry-dev/src/main/java/org/apache/camel/telemetrydev/DevTraceFormat.java index c53efc64957a1..2354d2cef10e9 100644 --- a/components/camel-telemetry-dev/src/main/java/org/apache/camel/telemetrydev/DevTraceFormat.java +++ b/components/camel-telemetry-dev/src/main/java/org/apache/camel/telemetrydev/DevTraceFormat.java @@ -20,11 +20,12 @@ import java.util.HashMap; import java.util.List; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.RuntimeCamelException; import org.apache.camel.telemetry.Op; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; /* * An interface used to represent a trace in a given format. @@ -55,15 +56,14 @@ class DevTraceFormatJson implements DevTraceFormat { ObjectMapper mapper; DevTraceFormatJson() { - mapper = new ObjectMapper(); - mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + mapper = JsonMapper.builder().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS).build(); } @Override public String format(DevTrace trace) { try { return mapper.writeValueAsString(trace); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeCamelException(e); } } diff --git a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTestSupport.java b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTestSupport.java index 56f63d67d5c32..e4e1596455c6d 100644 --- a/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTestSupport.java +++ b/components/camel-telemetry-dev/src/test/java/org/apache/camel/telemetrydev/TelemetryDevTracerTestSupport.java @@ -24,7 +24,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.telemetry.Op; import org.apache.camel.telemetry.TagConstants; import org.apache.camel.test.junit6.ExchangeTestSupport; @@ -32,6 +31,7 @@ import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.appender.RollingFileAppender; import org.junit.jupiter.api.AfterEach; +import tools.jackson.databind.ObjectMapper; public class TelemetryDevTracerTestSupport extends ExchangeTestSupport { diff --git a/components/camel-undertow/pom.xml b/components/camel-undertow/pom.xml index b587ebd0e3ef0..b92cbfe34c183 100644 --- a/components/camel-undertow/pom.xml +++ b/components/camel-undertow/pom.xml @@ -43,7 +43,8 @@ org.apache.camel camel-support - + + org.apache.camel camel-attachments @@ -93,6 +94,11 @@ camel-jackson test + + tools.jackson.core + jackson-databind + test + org.apache.camel camel-jaxb diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerThrowExceptionOnFailureTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerThrowExceptionOnFailureTest.java index 56170564b13d7..5de2e5368c80b 100644 --- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerThrowExceptionOnFailureTest.java +++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/UndertowProducerThrowExceptionOnFailureTest.java @@ -16,7 +16,6 @@ */ package org.apache.camel.component.undertow; -import com.fasterxml.jackson.core.JsonParseException; import org.apache.camel.CamelExecutionException; import org.apache.camel.Exchange; import org.apache.camel.FluentProducerTemplate; @@ -25,6 +24,7 @@ import org.apache.camel.http.base.HttpOperationFailedException; import org.apache.camel.model.rest.RestBindingMode; import org.junit.jupiter.api.Test; +import tools.jackson.core.JacksonException; import static org.apache.camel.test.junit6.TestSupport.assertIsInstanceOf; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -75,7 +75,7 @@ public void configure() { .component("undertow").port(getPort2()) .bindingMode(RestBindingMode.json); - onException(JsonParseException.class) + onException(JacksonException.class) .handled(true) .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400)) .setHeader(Exchange.CONTENT_TYPE, constant("text/plain")) diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoTypeTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoTypeTest.java index fb478f59bb28e..b67ea806c101b 100644 --- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoTypeTest.java +++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoTypeTest.java @@ -20,7 +20,6 @@ import java.util.Map; import java.util.TreeMap; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; @@ -30,6 +29,7 @@ import org.apache.camel.model.rest.RestDefinition; import org.apache.camel.model.rest.VerbDefinition; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-wasm/pom.xml b/components/camel-wasm/pom.xml index 5c5be42414016..ae39eb092bb7b 100644 --- a/components/camel-wasm/pom.xml +++ b/components/camel-wasm/pom.xml @@ -55,11 +55,11 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-core - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmExpression.java b/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmExpression.java index af542ad39d391..fdff4630b920e 100644 --- a/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmExpression.java +++ b/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmExpression.java @@ -21,7 +21,6 @@ import java.util.Collection; import com.dylibso.chicory.wasm.Parser; -import com.fasterxml.jackson.databind.node.BooleanNode; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; @@ -33,6 +32,7 @@ import org.apache.camel.support.PluginHelper; import org.apache.camel.wasm.WasmFunction; import org.apache.camel.wasm.WasmSupport; +import tools.jackson.databind.node.BooleanNode; public class WasmExpression extends ExpressionAdapter implements ExpressionResultTypeAware { private final String expression; diff --git a/components/camel-wasm/src/main/java/org/apache/camel/wasm/WasmSupport.java b/components/camel-wasm/src/main/java/org/apache/camel/wasm/WasmSupport.java index 343f237793de2..27e7540809cee 100644 --- a/components/camel-wasm/src/main/java/org/apache/camel/wasm/WasmSupport.java +++ b/components/camel-wasm/src/main/java/org/apache/camel/wasm/WasmSupport.java @@ -20,9 +20,9 @@ import java.util.Map; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.json.JsonMapper; import org.apache.camel.Exchange; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public final class WasmSupport { public static final ObjectMapper MAPPER = JsonMapper.builder().build(); diff --git a/components/camel-weather/pom.xml b/components/camel-weather/pom.xml index 738dd449152d3..9d9b338443693 100644 --- a/components/camel-weather/pom.xml +++ b/components/camel-weather/pom.xml @@ -45,7 +45,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core @@ -53,7 +53,7 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-weather/src/main/java/org/apache/camel/component/weather/geolocation/FreeGeoIpGeoLocationProvider.java b/components/camel-weather/src/main/java/org/apache/camel/component/weather/geolocation/FreeGeoIpGeoLocationProvider.java index 1776075b9aa5a..482143b633813 100644 --- a/components/camel-weather/src/main/java/org/apache/camel/component/weather/geolocation/FreeGeoIpGeoLocationProvider.java +++ b/components/camel-weather/src/main/java/org/apache/camel/component/weather/geolocation/FreeGeoIpGeoLocationProvider.java @@ -16,13 +16,13 @@ */ package org.apache.camel.component.weather.geolocation; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.weather.WeatherConfiguration; import org.apache.hc.client5.http.classic.HttpClient; import org.apache.hc.client5.http.classic.methods.HttpGet; import org.apache.hc.core5.http.HttpStatus; import org.apache.hc.core5.http.io.entity.EntityUtils; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.util.ObjectHelper.isEmpty; import static org.apache.camel.util.ObjectHelper.notNull; diff --git a/components/camel-whatsapp/pom.xml b/components/camel-whatsapp/pom.xml index a152742fecbb6..9dbabf815f181 100644 --- a/components/camel-whatsapp/pom.xml +++ b/components/camel-whatsapp/pom.xml @@ -43,12 +43,12 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core - com.fasterxml.jackson.core + tools.jackson.core jackson-databind @@ -56,10 +56,6 @@ com.fasterxml.jackson.core jackson-annotations - - com.fasterxml.jackson.datatype - jackson-datatype-jsr310 - diff --git a/components/camel-whatsapp/src/main/java/org/apache/camel/component/whatsapp/service/WhatsAppServiceRestAPIAdapter.java b/components/camel-whatsapp/src/main/java/org/apache/camel/component/whatsapp/service/WhatsAppServiceRestAPIAdapter.java index 0b4c73abecd92..b29387e722ee6 100644 --- a/components/camel-whatsapp/src/main/java/org/apache/camel/component/whatsapp/service/WhatsAppServiceRestAPIAdapter.java +++ b/components/camel-whatsapp/src/main/java/org/apache/camel/component/whatsapp/service/WhatsAppServiceRestAPIAdapter.java @@ -33,9 +33,6 @@ import java.util.function.Supplier; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.RuntimeCamelException; @@ -53,6 +50,9 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; /** * Java11 Http Client implementation @@ -71,8 +71,9 @@ public class WhatsAppServiceRestAPIAdapter implements WhatsAppService { public WhatsAppServiceRestAPIAdapter(HttpClient client, String baseUri, String apiVersion, String phoneNumberId, String authorizationToken) { this.baseUri = baseUri + "/" + apiVersion + "/" + phoneNumberId; - this.mapper = new ObjectMapper().registerModule(new JavaTimeModule()); - this.mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + this.mapper = JsonMapper.builder() + .changeDefaultPropertyInclusion(incl -> incl.withValueInclusion(JsonInclude.Include.NON_NULL)) + .build(); this.authorizationToken = authorizationToken; final Map, WhatsAppServiceRestAPIAdapter.OutgoingMessageHandler> m = new HashMap<>(); @@ -158,7 +159,7 @@ protected void addBody(Builder builder, BaseMessage message) { final String body = mapper.writeValueAsString(message); BodyPublisher bodyPublisher = BodyPublishers.ofString(body); builder.POST(bodyPublisher); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeCamelException("Could not serialize " + message, e); } } @@ -213,7 +214,7 @@ public void sendMessage(Exchange exchange, AsyncCallback callback, T message, St exchange.setException(exception); throw exception; } - } catch (JsonProcessingException e) { + } catch (JacksonException e) { exchange.setException(e); throw RuntimeCamelException.wrapRuntimeCamelException(e); } finally { diff --git a/components/camel-whatsapp/src/test/java/org/apache/camel/component/whatsapp/integration/WhatsAppServiceIT.java b/components/camel-whatsapp/src/test/java/org/apache/camel/component/whatsapp/integration/WhatsAppServiceIT.java index 2cc7c4683b207..0d461645576dd 100644 --- a/components/camel-whatsapp/src/test/java/org/apache/camel/component/whatsapp/integration/WhatsAppServiceIT.java +++ b/components/camel-whatsapp/src/test/java/org/apache/camel/component/whatsapp/integration/WhatsAppServiceIT.java @@ -22,7 +22,6 @@ import java.time.LocalDate; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.whatsapp.WhatsAppTestSupport; import org.apache.camel.component.whatsapp.model.Address; import org.apache.camel.component.whatsapp.model.ContactMessage; @@ -47,6 +46,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariables; +import tools.jackson.databind.ObjectMapper; @EnabledIfEnvironmentVariables({ @EnabledIfEnvironmentVariable(named = "WHATSAPP_AUTHORIZATION_TOKEN", matches = ".*", diff --git a/components/camel-wordpress/pom.xml b/components/camel-wordpress/pom.xml index 0621fe2227995..7e93a8344b841 100644 --- a/components/camel-wordpress/pom.xml +++ b/components/camel-wordpress/pom.xml @@ -78,11 +78,11 @@ ${cxf-version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-xml @@ -90,7 +90,7 @@ jackson-annotations - com.fasterxml.jackson.jakarta.rs + tools.jackson.jakarta.rs jackson-jakarta-rs-json-provider diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Content.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Content.java index a6e6bb17f950b..de509b734f50b 100644 --- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Content.java +++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Content.java @@ -20,7 +20,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import tools.jackson.dataformat.xml.annotation.JacksonXmlRootElement; /** * The Wordpress rendered content diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Post.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Post.java index 2d9a5517fd4ee..fe693a7d8da3f 100644 --- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Post.java +++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Post.java @@ -22,7 +22,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import tools.jackson.dataformat.xml.annotation.JacksonXmlRootElement; /** * Represents a Wordpress Post. diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Publishable.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Publishable.java index 66f7a6f3fb8b9..86fb23080a8ec 100644 --- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Publishable.java +++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/Publishable.java @@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import tools.jackson.dataformat.xml.annotation.JacksonXmlRootElement; /** * Describes a object that has base properties for a {@link TextPublishable} object. diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/PublishableStatus.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/PublishableStatus.java index 44b202f46cc82..1a69c311a283f 100644 --- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/PublishableStatus.java +++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/PublishableStatus.java @@ -17,7 +17,7 @@ package org.apache.camel.component.wordpress.api.model; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import tools.jackson.dataformat.xml.annotation.JacksonXmlRootElement; /** * A named status for the object. diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/TextPublishable.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/TextPublishable.java index 7b5c2d2338c93..afb85f2ade697 100644 --- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/TextPublishable.java +++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/TextPublishable.java @@ -20,7 +20,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import tools.jackson.dataformat.xml.annotation.JacksonXmlRootElement; /** * Describes a object that may be published on the Wordpress engine, eg. a Post, a Page etc. diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/User.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/User.java index c2376828f66b0..b0a0b3a3723d5 100644 --- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/User.java +++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/model/User.java @@ -22,7 +22,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; +import tools.jackson.dataformat.xml.annotation.JacksonXmlRootElement; @JacksonXmlRootElement @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/service/impl/AbstractWordpressServiceAdapter.java b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/service/impl/AbstractWordpressServiceAdapter.java index 4804ad60e1055..b4fe4ac16a1ed 100644 --- a/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/service/impl/AbstractWordpressServiceAdapter.java +++ b/components/camel-wordpress/src/main/java/org/apache/camel/component/wordpress/api/service/impl/AbstractWordpressServiceAdapter.java @@ -20,7 +20,6 @@ import jakarta.ws.rs.core.MediaType; -import com.fasterxml.jackson.jakarta.rs.json.JacksonJsonProvider; import org.apache.camel.component.wordpress.api.auth.WordpressAuthentication; import org.apache.camel.component.wordpress.api.service.WordpressService; import org.apache.camel.util.ObjectHelper; @@ -30,6 +29,7 @@ import org.apache.cxf.jaxrs.client.WebClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.jakarta.rs.json.JacksonJsonProvider; abstract class AbstractWordpressServiceAdapter implements WordpressService { private static final Logger LOGGER = LoggerFactory.getLogger(AbstractWordpressServiceAdapter.class); diff --git a/components/camel-xj/pom.xml b/components/camel-xj/pom.xml index 7cc5ae5975d2f..c28b0cf6d1875 100644 --- a/components/camel-xj/pom.xml +++ b/components/camel-xj/pom.xml @@ -38,7 +38,11 @@ camel-xslt-saxon - com.fasterxml.jackson.core + tools.jackson.core + jackson-core + + + tools.jackson.core jackson-databind diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonFileResultHandler.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonFileResultHandler.java index e9bb8b3a48b1d..2536014d62eb6 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonFileResultHandler.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonFileResultHandler.java @@ -17,15 +17,16 @@ package org.apache.camel.component.xj; import java.io.File; +import java.io.FileOutputStream; import javax.xml.transform.Result; import javax.xml.transform.stax.StAXResult; -import com.fasterxml.jackson.core.JsonEncoding; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; import org.apache.camel.Message; import org.apache.camel.component.xslt.ResultHandler; +import tools.jackson.core.JsonEncoding; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.json.JsonFactory; /** * Result handler impl. to write a json document into a {@link File} @@ -42,7 +43,7 @@ public class JsonFileResultHandler implements ResultHandler { */ public JsonFileResultHandler(JsonFactory jsonFactory, File file) throws Exception { this.file = file; - final JsonGenerator jsonGenerator = jsonFactory.createGenerator(this.file, JsonEncoding.UTF8); + final JsonGenerator jsonGenerator = jsonFactory.createGenerator(new FileOutputStream(this.file), JsonEncoding.UTF8); this.result = new StAXResult(new XmlJsonStreamWriter(jsonGenerator)); } diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonFileResultHandlerFactory.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonFileResultHandlerFactory.java index 07cf521970739..b8290dba5f6bc 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonFileResultHandlerFactory.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonFileResultHandlerFactory.java @@ -18,11 +18,11 @@ import java.io.File; -import com.fasterxml.jackson.core.JsonFactory; import org.apache.camel.Exchange; import org.apache.camel.component.xslt.ResultHandler; import org.apache.camel.component.xslt.ResultHandlerFactory; import org.apache.camel.support.ExchangeHelper; +import tools.jackson.core.json.JsonFactory; /** * A {@link JsonFileResultHandler} factory diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonSourceHandlerFactoryImpl.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonSourceHandlerFactoryImpl.java index 2a8e3305e5ce0..9f84586cc17ee 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonSourceHandlerFactoryImpl.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonSourceHandlerFactoryImpl.java @@ -24,12 +24,12 @@ import javax.xml.transform.Source; import javax.xml.transform.stax.StAXSource; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonParser; import org.apache.camel.Exchange; import org.apache.camel.ExpectedBodyTypeException; import org.apache.camel.Expression; import org.apache.camel.component.xslt.SourceHandlerFactory; +import tools.jackson.core.JsonParser; +import tools.jackson.core.json.JsonFactory; /** * Handler for json sources diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStreamResultHandler.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStreamResultHandler.java index 3cf930305d222..a2ea386365c7a 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStreamResultHandler.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStreamResultHandler.java @@ -21,11 +21,11 @@ import javax.xml.transform.Result; import javax.xml.transform.stax.StAXResult; -import com.fasterxml.jackson.core.JsonEncoding; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; import org.apache.camel.Message; import org.apache.camel.component.xslt.ResultHandler; +import tools.jackson.core.JsonEncoding; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.json.JsonFactory; /** * Result handler impl. to write a json document into a {@link ByteArrayOutputStream} diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStreamResultHandlerFactory.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStreamResultHandlerFactory.java index 3485700694d8a..3fa35f8268b53 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStreamResultHandlerFactory.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStreamResultHandlerFactory.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.xj; -import com.fasterxml.jackson.core.JsonFactory; import org.apache.camel.Exchange; import org.apache.camel.component.xslt.ResultHandler; import org.apache.camel.component.xslt.ResultHandlerFactory; +import tools.jackson.core.json.JsonFactory; /** * A {@link JsonStreamResultHandler} factory diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStringResultHandler.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStringResultHandler.java index 99da73b7053ac..d07bf76c7af15 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStringResultHandler.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStringResultHandler.java @@ -21,10 +21,10 @@ import javax.xml.transform.Result; import javax.xml.transform.stax.StAXResult; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; import org.apache.camel.Message; import org.apache.camel.component.xslt.ResultHandler; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.json.JsonFactory; /** * Result handler impl. to write a json document into a {@link String} diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStringResultHandlerFactory.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStringResultHandlerFactory.java index 8c605e01e7f9d..b48c8d630c847 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStringResultHandlerFactory.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonStringResultHandlerFactory.java @@ -16,10 +16,10 @@ */ package org.apache.camel.component.xj; -import com.fasterxml.jackson.core.JsonFactory; import org.apache.camel.Exchange; import org.apache.camel.component.xslt.ResultHandler; import org.apache.camel.component.xslt.ResultHandlerFactory; +import tools.jackson.core.json.JsonFactory; /** * A {@link JsonStringResultHandler} factory diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonXmlStreamReader.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonXmlStreamReader.java index 48f32b8647bfc..bc992eee8545d 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonXmlStreamReader.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/JsonXmlStreamReader.java @@ -33,9 +33,9 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonToken; import org.apache.camel.util.ObjectHelper; +import tools.jackson.core.JsonParser; +import tools.jackson.core.JsonToken; /** * XML Json bridge. Explicitly using XMLStreamReader and not XMLEventReader because saxon wants that. @@ -93,100 +93,96 @@ public Object getProperty(String name) throws IllegalArgumentException { @Override public int next() throws XMLStreamException { - try { - final StackElement previousElement = tokenStack.peek(); - if (previousElement != null) { - switch (previousElement.jsonToken) { - case VALUE_STRING: - case VALUE_NUMBER_INT: - case VALUE_NUMBER_FLOAT: - case VALUE_NULL: - case VALUE_TRUE: - case VALUE_FALSE: { - switch (previousElement.xmlEvent) { - case XMLStreamConstants.START_ELEMENT: - previousElement.xmlEvent = XMLStreamConstants.CHARACTERS; - return XMLStreamConstants.CHARACTERS; - case XMLStreamConstants.CHARACTERS: - removeStackElement(previousElement.jsonToken); - removeStackElement(JsonToken.FIELD_NAME); - - ObjectHelper.notNull(tokenStack.peek(), "tokenStack.peek()"); - tokenStack.peek().xmlEvent = XMLStreamConstants.END_ELEMENT; - return XMLStreamConstants.END_ELEMENT; - default: - throw new IllegalStateException("illegal state"); - } + final StackElement previousElement = tokenStack.peek(); + if (previousElement != null) { + switch (previousElement.jsonToken) { + case VALUE_STRING: + case VALUE_NUMBER_INT: + case VALUE_NUMBER_FLOAT: + case VALUE_NULL: + case VALUE_TRUE: + case VALUE_FALSE: { + switch (previousElement.xmlEvent) { + case XMLStreamConstants.START_ELEMENT: + previousElement.xmlEvent = XMLStreamConstants.CHARACTERS; + return XMLStreamConstants.CHARACTERS; + case XMLStreamConstants.CHARACTERS: + removeStackElement(previousElement.jsonToken); + removeStackElement(JsonToken.PROPERTY_NAME); + + ObjectHelper.notNull(tokenStack.peek(), "tokenStack.peek()"); + tokenStack.peek().xmlEvent = XMLStreamConstants.END_ELEMENT; + return XMLStreamConstants.END_ELEMENT; + default: + throw new IllegalStateException("illegal state"); } - default: - break; } + default: + break; } + } - if (eof) { - return END_DOCUMENT; - } + if (eof) { + return END_DOCUMENT; + } - JsonToken currentToken = jsonParser.nextToken(); - if (currentToken == null) { - throw new IllegalStateException("End of document"); - } + JsonToken currentToken = jsonParser.nextToken(); + if (currentToken == null) { + throw new IllegalStateException("End of document"); + } + + StackElement stackElement = new StackElement(currentToken, toXmlString(jsonParser.currentName())); + tokenStack.push(stackElement); + + if (currentToken == JsonToken.PROPERTY_NAME) { + currentToken = jsonParser.nextToken(); - StackElement stackElement = new StackElement(currentToken, toXmlString(jsonParser.getCurrentName())); + stackElement = new StackElement(currentToken, toXmlString(jsonParser.currentName())); tokenStack.push(stackElement); + } - if (currentToken == JsonToken.FIELD_NAME) { - currentToken = jsonParser.nextToken(); + switch (currentToken) { + case START_OBJECT: + case START_ARRAY: + case VALUE_STRING: + case VALUE_NUMBER_INT: + case VALUE_NUMBER_FLOAT: + case VALUE_NULL: + case VALUE_TRUE: + case VALUE_FALSE: + stackElement.xmlEvent = XMLStreamConstants.START_ELEMENT; - stackElement = new StackElement(currentToken, toXmlString(jsonParser.getCurrentName())); - tokenStack.push(stackElement); - } + return XMLStreamConstants.START_ELEMENT; + case END_OBJECT: + removeStackElement(JsonToken.END_OBJECT); + removeStackElement(JsonToken.START_OBJECT); + removeStackElement(JsonToken.PROPERTY_NAME); + eof = tokenStack.isEmpty(); - switch (currentToken) { - case START_OBJECT: - case START_ARRAY: - case VALUE_STRING: - case VALUE_NUMBER_INT: - case VALUE_NUMBER_FLOAT: - case VALUE_NULL: - case VALUE_TRUE: - case VALUE_FALSE: - stackElement.xmlEvent = XMLStreamConstants.START_ELEMENT; - - return XMLStreamConstants.START_ELEMENT; - case END_OBJECT: - removeStackElement(JsonToken.END_OBJECT); - removeStackElement(JsonToken.START_OBJECT); - removeStackElement(JsonToken.FIELD_NAME); - eof = tokenStack.isEmpty(); - - return XMLStreamConstants.END_ELEMENT; - case END_ARRAY: - removeStackElement(JsonToken.END_ARRAY); - removeStackElement(JsonToken.START_ARRAY); - removeStackElement(JsonToken.FIELD_NAME); - eof = tokenStack.isEmpty(); - - return XMLStreamConstants.END_ELEMENT; - default: - throw new IllegalStateException("JsonToken: " + currentToken); - } + return XMLStreamConstants.END_ELEMENT; + case END_ARRAY: + removeStackElement(JsonToken.END_ARRAY); + removeStackElement(JsonToken.START_ARRAY); + removeStackElement(JsonToken.PROPERTY_NAME); + eof = tokenStack.isEmpty(); - } catch (IOException e) { - throw new XMLStreamException(e); + return XMLStreamConstants.END_ELEMENT; + default: + throw new IllegalStateException("JsonToken: " + currentToken); } + } private void removeStackElement(JsonToken jsonToken) { final StackElement stackElement = tokenStack.peek(); if (stackElement == null || stackElement.jsonToken != jsonToken) { - if (stackElement != null && jsonToken == JsonToken.FIELD_NAME + if (stackElement != null && jsonToken == JsonToken.PROPERTY_NAME && stackElement.jsonToken == JsonToken.START_ARRAY) { // anonymous array return; } - if (stackElement == null && jsonToken == JsonToken.FIELD_NAME) { + if (stackElement == null && jsonToken == JsonToken.PROPERTY_NAME) { // root object / array return; } @@ -226,11 +222,7 @@ public boolean hasNext() { @Override public void close() throws XMLStreamException { - try { - jsonParser.close(); - } catch (IOException e) { - throw new XMLStreamException(e); - } + jsonParser.close(); } @Override diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/XJConstants.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/XJConstants.java index be8967f99de1a..7cb7527b8c52f 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/XJConstants.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/XJConstants.java @@ -22,9 +22,9 @@ import java.util.HashMap; import java.util.Map; -import com.fasterxml.jackson.core.JsonToken; import org.apache.camel.Exchange; import org.apache.camel.spi.Metadata; +import tools.jackson.core.JsonToken; public final class XJConstants { diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/XJEndpoint.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/XJEndpoint.java index 6a0c7655ba833..4d05112494474 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/XJEndpoint.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/XJEndpoint.java @@ -16,7 +16,6 @@ */ package org.apache.camel.component.xj; -import com.fasterxml.jackson.core.JsonFactory; import org.apache.camel.Category; import org.apache.camel.Component; import org.apache.camel.api.management.ManagedAttribute; @@ -27,6 +26,7 @@ import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; +import tools.jackson.core.json.JsonFactory; /** * Transform JSON and XML message using a XSLT. diff --git a/components/camel-xj/src/main/java/org/apache/camel/component/xj/XmlJsonStreamWriter.java b/components/camel-xj/src/main/java/org/apache/camel/component/xj/XmlJsonStreamWriter.java index ae410d4ec5ba8..342ac68bdbf6a 100644 --- a/components/camel-xj/src/main/java/org/apache/camel/component/xj/XmlJsonStreamWriter.java +++ b/components/camel-xj/src/main/java/org/apache/camel/component/xj/XmlJsonStreamWriter.java @@ -33,8 +33,8 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonToken; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonToken; /** * XML Json bridge. Explicitly using StreamWriter and not XMLEventWriter because saxon wants that. @@ -115,20 +115,12 @@ public void writeEndDocument() throws XMLStreamException { @Override public void close() throws XMLStreamException { - try { - jsonGenerator.close(); - } catch (IOException e) { - throw new XMLStreamException(e); - } + jsonGenerator.close(); } @Override public void flush() throws XMLStreamException { - try { - jsonGenerator.flush(); - } catch (IOException e) { - throw new XMLStreamException(e); - } + jsonGenerator.flush(); } @Override @@ -354,7 +346,7 @@ private void writeEndNoTypeHints() { if (this.parent.jsonToken == JsonToken.NOT_AVAILABLE) { jsonToken = JsonToken.START_OBJECT; } else { - jsonToken = JsonToken.FIELD_NAME; + jsonToken = JsonToken.PROPERTY_NAME; final TreeElement treeElement = new TreeElement(this, -1, JsonToken.VALUE_STRING); treeElement.setValue(""); @@ -373,13 +365,13 @@ private void writeEndNoTypeHints() { } else { // create new intermediary element final TreeElement treeElement = new TreeElement( - this, -1, JsonToken.FIELD_NAME, XJConstants.JSON_WRITER_MIXED_CONTENT_TEXT_KEY); + this, -1, JsonToken.PROPERTY_NAME, XJConstants.JSON_WRITER_MIXED_CONTENT_TEXT_KEY); treeElement.addChild(child); childs.set(childs.indexOf(child), treeElement); child.parent = treeElement; } } else { - jsonToken = JsonToken.FIELD_NAME; + jsonToken = JsonToken.PROPERTY_NAME; } } else { // mixed content fixup. @@ -393,7 +385,7 @@ private void writeEndNoTypeHints() { } else { // create new intermediary element final TreeElement treeElement = new TreeElement( - this, -1, JsonToken.FIELD_NAME, + this, -1, JsonToken.PROPERTY_NAME, element.name != null ? element.name : XJConstants.JSON_WRITER_MIXED_CONTENT_TEXT_KEY); treeElement.addChild(element); childs.set(childs.indexOf(element), treeElement); @@ -425,10 +417,10 @@ private void writeEndHaveTypeHints() { treeElement.setValue(""); this.addChild(treeElement); - jsonToken = JsonToken.FIELD_NAME; + jsonToken = JsonToken.PROPERTY_NAME; } else if (childs.size() == 1) { childs.get(0).jsonToken = jsonToken; - jsonToken = JsonToken.FIELD_NAME; + jsonToken = JsonToken.PROPERTY_NAME; } else { // create FIELD childs if element contains text and attributes. final Iterator iterator = childs.iterator(); @@ -441,7 +433,7 @@ private void writeEndHaveTypeHints() { } else { // create new intermediary element final TreeElement treeElement = new TreeElement( - this, -1, JsonToken.FIELD_NAME, + this, -1, JsonToken.PROPERTY_NAME, element.name != null ? element.name : XJConstants.JSON_WRITER_MIXED_CONTENT_TEXT_KEY); treeElement.addChild(element); @@ -472,7 +464,7 @@ private void writeEndHaveTypeHints() { } else { // create new intermediary element final TreeElement treeElement = new TreeElement( - this, -1, JsonToken.FIELD_NAME, XJConstants.JSON_WRITER_MIXED_CONTENT_TEXT_KEY); + this, -1, JsonToken.PROPERTY_NAME, XJConstants.JSON_WRITER_MIXED_CONTENT_TEXT_KEY); treeElement.addChild(element); childs.set(childs.indexOf(element), treeElement); element.parent = treeElement; @@ -546,7 +538,7 @@ void write(JsonGenerator jsonGenerator) throws IOException { break; case START_OBJECT: if (parent.jsonToken == JsonToken.START_OBJECT) { - jsonGenerator.writeObjectFieldStart(name); + jsonGenerator.writeObjectPropertyStart(name); } else { jsonGenerator.writeStartObject(); } @@ -554,15 +546,15 @@ void write(JsonGenerator jsonGenerator) throws IOException { break; case START_ARRAY: if (parent.jsonToken == JsonToken.START_OBJECT) { - jsonGenerator.writeArrayFieldStart(name); + jsonGenerator.writeArrayPropertyStart(name); } else { jsonGenerator.writeStartArray(); } break; - case FIELD_NAME: + case PROPERTY_NAME: if (parent.jsonToken != JsonToken.START_ARRAY) { - jsonGenerator.writeFieldName(name); + jsonGenerator.writeName(name); } break; @@ -602,7 +594,7 @@ void write(JsonGenerator jsonGenerator) throws IOException { break; case VALUE_NULL: case NOT_AVAILABLE: - case FIELD_NAME: + case PROPERTY_NAME: case VALUE_STRING: case VALUE_NUMBER_INT: case VALUE_NUMBER_FLOAT: diff --git a/components/camel-xj/src/test/java/org/apache/camel/component/xj/XJTestUtils.java b/components/camel-xj/src/test/java/org/apache/camel/component/xj/XJTestUtils.java index 7ec4c2630851c..ea2c3a2512a58 100644 --- a/components/camel-xj/src/test/java/org/apache/camel/component/xj/XJTestUtils.java +++ b/components/camel-xj/src/test/java/org/apache/camel/component/xj/XJTestUtils.java @@ -38,15 +38,15 @@ import org.w3c.dom.Comment; -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonParser; import org.apache.commons.io.IOUtils; import org.skyscreamer.jsonassert.JSONAssert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xmlunit.assertj3.XmlAssert; import org.xmlunit.builder.Input; +import tools.jackson.core.JsonGenerator; +import tools.jackson.core.JsonParser; +import tools.jackson.core.json.JsonFactory; final class XJTestUtils { diff --git a/components/camel-zeebe/pom.xml b/components/camel-zeebe/pom.xml index 908b9754fe54d..a1412e574ff94 100644 --- a/components/camel-zeebe/pom.xml +++ b/components/camel-zeebe/pom.xml @@ -44,7 +44,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core @@ -52,7 +52,7 @@ jackson-annotations - com.fasterxml.jackson.core + tools.jackson.core jackson-databind @@ -96,6 +96,12 @@ camel-test-junit6 test + + org.skyscreamer + jsonassert + ${jsonassert-version} + test + org.testcontainers testcontainers-junit-jupiter diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConsumer.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConsumer.java index 3ea388de52b85..a6c1e064fad0d 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConsumer.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/ZeebeConsumer.java @@ -17,8 +17,6 @@ package org.apache.camel.component.zeebe; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import io.camunda.zeebe.client.api.response.ActivatedJob; import io.camunda.zeebe.client.api.worker.JobClient; import io.camunda.zeebe.client.api.worker.JobHandler; @@ -33,6 +31,8 @@ import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public class ZeebeConsumer extends DefaultConsumer { private static final Logger LOG = LoggerFactory.getLogger(ZeebeConsumer.class); @@ -102,8 +102,8 @@ public void handle(JobClient client, ActivatedJob job) throws Exception { try { exchange.getMessage().setBody(objectMapper.writeValueAsString(message)); exchange.getMessage().setHeader(ZeebeConstants.JOB_KEY, job.getKey()); - } catch (JsonProcessingException jsonProcessingException) { - throw new IllegalArgumentException("Cannot convert result", jsonProcessingException); + } catch (JacksonException JacksonException) { + throw new IllegalArgumentException("Cannot convert result", JacksonException); } } else { exchange.getMessage().setBody(message); diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/internal/ZeebeService.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/internal/ZeebeService.java index 5f331a8c0bf7a..93369f2e74174 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/internal/ZeebeService.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/internal/ZeebeService.java @@ -19,8 +19,6 @@ import java.time.Duration; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.protobuf.ByteString; import io.camunda.zeebe.client.ZeebeClient; import io.camunda.zeebe.client.api.command.ClientStatusException; @@ -45,6 +43,8 @@ import org.apache.camel.component.zeebe.model.ProcessResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public class ZeebeService { private static final Logger LOG = LoggerFactory.getLogger(ZeebeService.class); @@ -191,7 +191,7 @@ public MessageResponse publishMessage(MessageRequest message) { resultMessage.setErrorMessage(exception.getMessage()); resultMessage.setErrorCode(exception.getStatus().toString()); resultMessage.setSuccess(false); - } catch (JsonProcessingException exception) { + } catch (JacksonException exception) { LOG.error("Could not convert variables to JSON", exception); resultMessage.setErrorMessage(exception.getMessage()); resultMessage.setSuccess(false); @@ -219,7 +219,7 @@ public JobResponse completeJob(JobRequest message) { resultMessage.setErrorMessage(exception.getMessage()); resultMessage.setErrorCode(exception.getStatus().toString()); resultMessage.setSuccess(false); - } catch (JsonProcessingException exception) { + } catch (JacksonException exception) { LOG.error("Could not convert variables to JSON", exception); resultMessage.setErrorMessage(exception.getMessage()); resultMessage.setSuccess(false); diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/AbstractBaseProcessor.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/AbstractBaseProcessor.java index e3911f92dd645..8cbff59e6b9a3 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/AbstractBaseProcessor.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/AbstractBaseProcessor.java @@ -17,13 +17,13 @@ package org.apache.camel.component.zeebe.processor; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.component.zeebe.ZeebeConstants; import org.apache.camel.component.zeebe.ZeebeEndpoint; import org.apache.camel.component.zeebe.model.ZeebeMessage; import org.apache.camel.support.service.BaseService; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; public abstract class AbstractBaseProcessor extends BaseService implements ZeebeProcessor { protected final ZeebeEndpoint endpoint; @@ -37,8 +37,8 @@ protected void setBody(Exchange exchange, ZeebeMessage message, boolean formatJS if (endpoint.isFormatJSON()) { try { exchange.getMessage().setBody(objectMapper.writeValueAsString(message)); - } catch (JsonProcessingException jsonProcessingException) { - throw new IllegalArgumentException("Cannot convert result", jsonProcessingException); + } catch (JacksonException JacksonException) { + throw new IllegalArgumentException("Cannot convert result", JacksonException); } } else { exchange.getMessage().setBody(message); diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/DeploymentProcessor.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/DeploymentProcessor.java index daa2f0deeac01..7468bd9b0434e 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/DeploymentProcessor.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/DeploymentProcessor.java @@ -19,7 +19,6 @@ import java.io.InputStream; -import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.camel.CamelException; import org.apache.camel.Exchange; import org.apache.camel.component.zeebe.ZeebeConstants; @@ -28,6 +27,7 @@ import org.apache.camel.component.zeebe.model.DeploymentRequest; import org.apache.camel.component.zeebe.model.DeploymentResponse; import org.apache.camel.component.zeebe.model.ProcessDeploymentResponse; +import tools.jackson.core.JacksonException; public class DeploymentProcessor extends AbstractBaseProcessor { public DeploymentProcessor(ZeebeEndpoint endpoint) { @@ -55,8 +55,8 @@ public void process(Exchange exchange) throws Exception { } else if (body instanceof String) { try { message = objectMapper.readValue((String) body, DeploymentRequest.class); - } catch (JsonProcessingException jsonProcessingException) { - throw new IllegalArgumentException("Cannot convert body to DeploymentRequestMessage", jsonProcessingException); + } catch (JacksonException JacksonException) { + throw new IllegalArgumentException("Cannot convert body to DeploymentRequestMessage", JacksonException); } } else { throw new CamelException("Deployment Resource missing"); diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/JobProcessor.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/JobProcessor.java index d5a95ca2488d7..2fbb0e7760c37 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/JobProcessor.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/JobProcessor.java @@ -17,7 +17,6 @@ package org.apache.camel.component.zeebe.processor; -import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.camel.CamelException; import org.apache.camel.Exchange; import org.apache.camel.component.zeebe.ZeebeConstants; @@ -26,6 +25,7 @@ import org.apache.camel.component.zeebe.model.JobRequest; import org.apache.camel.component.zeebe.model.JobResponse; import org.apache.camel.component.zeebe.model.JobWorkerMessage; +import tools.jackson.core.JacksonException; public class JobProcessor extends AbstractBaseProcessor { public JobProcessor(ZeebeEndpoint endpoint) { @@ -44,8 +44,8 @@ public void process(Exchange exchange) throws Exception { String bodyString = exchange.getMessage().getBody(String.class); message = objectMapper.readValue(bodyString, JobRequest.class); - } catch (JsonProcessingException jsonProcessingException) { - throw new IllegalArgumentException("Cannot convert body to JobMessage", jsonProcessingException); + } catch (JacksonException JacksonException) { + throw new IllegalArgumentException("Cannot convert body to JobMessage", JacksonException); } } else if (exchange.getMessage().getBody() instanceof JobWorkerMessage) { JobWorkerMessage jobWorkerMessage = exchange.getMessage().getBody(JobWorkerMessage.class); diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/MessageProcessor.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/MessageProcessor.java index 71526d8347c3b..0f23ad9c90217 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/MessageProcessor.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/MessageProcessor.java @@ -17,13 +17,13 @@ package org.apache.camel.component.zeebe.processor; -import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.camel.CamelException; import org.apache.camel.Exchange; import org.apache.camel.component.zeebe.ZeebeEndpoint; import org.apache.camel.component.zeebe.internal.ZeebeService; import org.apache.camel.component.zeebe.model.MessageRequest; import org.apache.camel.component.zeebe.model.MessageResponse; +import tools.jackson.core.JacksonException; public class MessageProcessor extends AbstractBaseProcessor { @@ -42,8 +42,8 @@ public void process(Exchange exchange) throws Exception { String bodyString = exchange.getMessage().getBody(String.class); message = objectMapper.readValue(bodyString, MessageRequest.class); - } catch (JsonProcessingException jsonProcessingException) { - throw new IllegalArgumentException("Cannot convert body to MessageMessage", jsonProcessingException); + } catch (JacksonException JacksonException) { + throw new IllegalArgumentException("Cannot convert body to MessageMessage", JacksonException); } } else { throw new CamelException("Message data missing"); diff --git a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/ProcessProcessor.java b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/ProcessProcessor.java index cf41d42c465cd..143d4a7ec30a7 100644 --- a/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/ProcessProcessor.java +++ b/components/camel-zeebe/src/main/java/org/apache/camel/component/zeebe/processor/ProcessProcessor.java @@ -17,13 +17,13 @@ package org.apache.camel.component.zeebe.processor; -import com.fasterxml.jackson.core.JsonProcessingException; import org.apache.camel.CamelException; import org.apache.camel.Exchange; import org.apache.camel.component.zeebe.ZeebeEndpoint; import org.apache.camel.component.zeebe.internal.ZeebeService; import org.apache.camel.component.zeebe.model.ProcessRequest; import org.apache.camel.component.zeebe.model.ProcessResponse; +import tools.jackson.core.JacksonException; public class ProcessProcessor extends AbstractBaseProcessor { public ProcessProcessor(ZeebeEndpoint endpoint) { @@ -46,8 +46,8 @@ public void process(Exchange exchange) throws Exception { String bodyString = exchange.getMessage().getBody(String.class); message = objectMapper.readValue(bodyString, ProcessRequest.class); - } catch (JsonProcessingException jsonProcessingException) { - throw new IllegalArgumentException("Cannot convert body to ProcessMessage", jsonProcessingException); + } catch (JacksonException JacksonException) { + throw new IllegalArgumentException("Cannot convert body to ProcessMessage", JacksonException); } } else { throw new CamelException("Process data missing"); diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ResourceDeploymentIT.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ResourceDeploymentIT.java index 59d7d32948e4d..324718af80c66 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ResourceDeploymentIT.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ResourceDeploymentIT.java @@ -17,7 +17,6 @@ package org.apache.camel.component.zeebe; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; @@ -27,6 +26,7 @@ import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfSystemProperty; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ThrowErrorIT.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ThrowErrorIT.java index 79f1acc75fb59..d78fbb1103044 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ThrowErrorIT.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ThrowErrorIT.java @@ -17,7 +17,6 @@ package org.apache.camel.component.zeebe; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; @@ -26,6 +25,7 @@ import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfSystemProperty; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ZeebeConsumerIT.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ZeebeConsumerIT.java index 27d517028c025..b3f3bbc12bfca 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ZeebeConsumerIT.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/ZeebeConsumerIT.java @@ -20,7 +20,6 @@ import java.time.Duration; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.builder.RouteBuilder; @@ -40,6 +39,7 @@ import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; import org.testcontainers.shaded.org.awaitility.Awaitility; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/DeploymentRequestTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/DeploymentRequestTest.java index f772c73c4a493..21bb5ba28547b 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/DeploymentRequestTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/DeploymentRequestTest.java @@ -17,8 +17,11 @@ package org.apache.camel.component.zeebe.model; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -30,13 +33,13 @@ public class DeploymentRequestTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() { + public void marshalTest() throws JSONException { DeploymentRequest message = new DeploymentRequest(); message.setName("test.bpmn"); message.setContent("test content".getBytes()); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); } diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobRequestTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobRequestTest.java index 5f949c1161f03..52f8bdb089c55 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobRequestTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobRequestTest.java @@ -20,8 +20,11 @@ import java.util.Collections; import java.util.HashMap; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -35,13 +38,13 @@ public class JobRequestTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() { + public void marshalTest() throws JSONException { JobRequest message = new JobRequest(); message.setJobKey(1); message.setRetries(2); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); HashMap variables = new HashMap<>(); variables.put("varA", "test"); @@ -50,7 +53,8 @@ public void marshalTest() { message.setVariables(variables); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_2, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_2, messageString, JSONCompareMode.NON_EXTENSIBLE); + } @Test diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobResponseTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobResponseTest.java index 5915e920a4ead..6d31e4bba83f2 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobResponseTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobResponseTest.java @@ -17,8 +17,11 @@ package org.apache.camel.component.zeebe.model; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -32,19 +35,19 @@ public class JobResponseTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() { + public void marshalTest() throws JSONException { JobResponse message = new JobResponse(); message.setSuccess(true); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); message.setSuccess(false); message.setErrorMessage("Test Error"); message.setErrorCode("TestCode"); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_2, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_2, messageString, JSONCompareMode.NON_EXTENSIBLE); } @Test diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobWorkerMessageTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobWorkerMessageTest.java index ca424ae0781cb..0b3ac44c04f85 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobWorkerMessageTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/JobWorkerMessageTest.java @@ -20,8 +20,11 @@ import java.util.Collections; import java.util.HashMap; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -41,7 +44,7 @@ public class JobWorkerMessageTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() { + public void marshalTest() throws JSONException { JobWorkerMessage message = new JobWorkerMessage(); message.setWorker("worker"); message.setRetries(1); @@ -55,7 +58,7 @@ public void marshalTest() { message.setType("type"); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); HashMap variables = new HashMap<>(); variables.put("varA", "test"); @@ -64,7 +67,7 @@ public void marshalTest() { message.setVariables(variables); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_2, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_2, messageString, JSONCompareMode.NON_EXTENSIBLE); HashMap headers = new HashMap<>(); headers.put("h1", "test1"); @@ -73,7 +76,7 @@ public void marshalTest() { message.setCustomHeaders(headers); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_3, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_3, messageString, JSONCompareMode.NON_EXTENSIBLE); } @Test diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/MessageRequestTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/MessageRequestTest.java index 8bcffab428f48..be5f76d64a178 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/MessageRequestTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/MessageRequestTest.java @@ -20,8 +20,11 @@ import java.util.Collections; import java.util.HashMap; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -36,7 +39,7 @@ public class MessageRequestTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() { + public void marshalTest() throws JSONException { MessageRequest message = new MessageRequest(); message.setName("test"); message.setCorrelationKey("correlation"); @@ -44,7 +47,7 @@ public void marshalTest() { message.setTimeToLive(100); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); HashMap variables = new HashMap<>(); variables.put("varA", "test"); @@ -53,7 +56,7 @@ public void marshalTest() { message.setVariables(variables); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_2, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_2, messageString, JSONCompareMode.NON_EXTENSIBLE); } @Test diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/MessageResponseTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/MessageResponseTest.java index 5d5487c82d181..bd46b862584ae 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/MessageResponseTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/MessageResponseTest.java @@ -17,8 +17,11 @@ package org.apache.camel.component.zeebe.model; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -33,21 +36,21 @@ public class MessageResponseTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() { + public void marshalTest() throws JSONException { MessageResponse message = new MessageResponse(); message.setMessageKey(111); message.setCorrelationKey("testKey"); message.setSuccess(true); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); message.setSuccess(false); message.setErrorMessage("Test Error"); message.setErrorCode("TestCode"); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_2, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_2, messageString, JSONCompareMode.NON_EXTENSIBLE); } @Test diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessDeploymentResponseTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessDeploymentResponseTest.java index 796a813d48ff5..3a9e3b088501a 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessDeploymentResponseTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessDeploymentResponseTest.java @@ -17,8 +17,11 @@ package org.apache.camel.component.zeebe.model; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -33,7 +36,7 @@ public class ProcessDeploymentResponseTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() { + public void marshalTest() throws JSONException { ProcessDeploymentResponse message = new ProcessDeploymentResponse(); message.setBpmnProcessId("testProcess"); message.setProcessDefinitionKey(111); @@ -42,14 +45,14 @@ public void marshalTest() { message.setSuccess(true); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); message.setSuccess(false); message.setErrorMessage("Test Error"); message.setErrorCode("TestCode"); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_2, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_2, messageString, JSONCompareMode.NON_EXTENSIBLE); } @Test diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessRequestTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessRequestTest.java index bc5ddbe78f3d6..56193e673fed9 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessRequestTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessRequestTest.java @@ -20,9 +20,12 @@ import java.util.Collections; import java.util.HashMap; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -37,7 +40,7 @@ public class ProcessRequestTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() throws JsonProcessingException { + public void marshalTest() throws JacksonException, JSONException { ProcessRequest message = new ProcessRequest(); message.setProcessInstanceKey(1); message.setProcessId("process_1"); @@ -45,7 +48,7 @@ public void marshalTest() throws JsonProcessingException { message.setProcessKey(1); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); HashMap variables = new HashMap<>(); variables.put("varA", "test"); @@ -54,7 +57,7 @@ public void marshalTest() throws JsonProcessingException { message.setVariables(variables); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_2, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_2, messageString, JSONCompareMode.NON_EXTENSIBLE); } @Test diff --git a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessResponseTest.java b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessResponseTest.java index 080bd3bb08396..1af0b8e6751f4 100644 --- a/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessResponseTest.java +++ b/components/camel-zeebe/src/test/java/org/apache/camel/component/zeebe/model/ProcessResponseTest.java @@ -17,8 +17,11 @@ package org.apache.camel.component.zeebe.model; -import com.fasterxml.jackson.databind.ObjectMapper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -33,7 +36,7 @@ public class ProcessResponseTest { private final ObjectMapper objectMapper = new ObjectMapper(); @Test - public void marshalTest() { + public void marshalTest() throws JSONException { ProcessResponse message = new ProcessResponse(); message.setProcessId("testProcess"); message.setProcessKey(111); @@ -42,14 +45,14 @@ public void marshalTest() { message.setSuccess(true); String messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_1, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_1, messageString, JSONCompareMode.NON_EXTENSIBLE); message.setSuccess(false); message.setErrorMessage("Test Error"); message.setErrorCode("TestCode"); messageString = assertDoesNotThrow(() -> objectMapper.writeValueAsString(message)); - assertEquals(MARSHAL_TEST_RESULT_2, messageString); + JSONAssert.assertEquals(MARSHAL_TEST_RESULT_2, messageString, JSONCompareMode.NON_EXTENSIBLE); } @Test diff --git a/components/camel-zookeeper-master/pom.xml b/components/camel-zookeeper-master/pom.xml index 877be1c2dfcc9..cbd81d840183a 100644 --- a/components/camel-zookeeper-master/pom.xml +++ b/components/camel-zookeeper-master/pom.xml @@ -76,11 +76,11 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-core - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/MasterConsumer.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/MasterConsumer.java index a35136ab889ec..55eff9afd84b4 100644 --- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/MasterConsumer.java +++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/MasterConsumer.java @@ -16,9 +16,6 @@ */ package org.apache.camel.component.zookeepermaster; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.SuspendableService; @@ -29,6 +26,9 @@ import org.apache.camel.support.service.ServiceHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; /** * A consumer which is only really active while it holds the master lock @@ -63,9 +63,10 @@ public boolean isMaster() { @ManagedOperation(description = "Information about all the slaves") public String slaves() { try { - return new ObjectMapper() + return JsonMapper.builder() .enable(SerializationFeature.INDENT_OUTPUT) .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .build() .writeValueAsString(groupListener.getGroup().slaves()); } catch (Exception e) { return null; diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/NodeState.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/NodeState.java index 98a90b16c0e28..11944d092af26 100644 --- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/NodeState.java +++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/NodeState.java @@ -19,8 +19,7 @@ import java.util.UUID; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; public class NodeState { @@ -61,7 +60,7 @@ public String getContainer() { @Override public String toString() { try { - return new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).writeValueAsString(this); + return new ObjectMapper().writeValueAsString(this); } catch (Exception e) { return super.toString(); } diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroup.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroup.java index d251114fc1063..e8d9c45bf1817 100644 --- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroup.java +++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroup.java @@ -39,8 +39,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.zookeepermaster.group.Group; import org.apache.camel.component.zookeepermaster.group.GroupListener; import org.apache.camel.component.zookeepermaster.group.NodeState; @@ -57,6 +55,9 @@ import org.apache.zookeeper.data.Stat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; /** *

@@ -74,7 +75,9 @@ public class ZooKeeperGroup implements Group { private static final Logger LOG = LoggerFactory.getLogger(ZooKeeperGroup.class); - private static ObjectMapper mapper = new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + private static ObjectMapper mapper = JsonMapper.builder() + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .build(); private final Class clazz; private final CuratorFramework client; @@ -210,7 +213,7 @@ public void close() throws IOException { } listeners.clear(); mapper.getTypeFactory().clearCache(); - mapper = new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); + mapper = JsonMapper.builder().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).build(); client.clearWatcherReferences(childrenWatcher); client.clearWatcherReferences(dataWatcher); @@ -592,11 +595,7 @@ private byte[] encode(T state) { } private T decode(byte[] data) { - try { - return mapper.readValue(data, clazz); - } catch (IOException e) { - throw new IllegalStateException("Unable to decode data", e); - } + return mapper.readValue(data, clazz); } private void offerOperation(Operation operation) { diff --git a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java index 3abbb0c5f36f4..501207bfdbb36 100644 --- a/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java +++ b/components/camel-zookeeper-master/src/main/java/org/apache/camel/component/zookeepermaster/policy/MasterRoutePolicy.java @@ -18,9 +18,6 @@ import java.util.concurrent.atomic.AtomicBoolean; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.Route; @@ -38,6 +35,9 @@ import org.apache.curator.framework.CuratorFramework; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; /** * {@link org.apache.camel.spi.RoutePolicy} to run the route in master/slave mode. @@ -179,9 +179,10 @@ public String slaves() { return null; } try { - return new ObjectMapper() + return JsonMapper.builder() .enable(SerializationFeature.INDENT_OUTPUT) .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .build() .writeValueAsString(groupListener.getGroup().slaves()); } catch (Exception e) { return null; diff --git a/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroupTest.java b/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroupTest.java index 3dd745e8c3bc2..5fc9075ce859d 100644 --- a/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroupTest.java +++ b/components/camel-zookeeper-master/src/test/java/org/apache/camel/component/zookeepermaster/group/internal/ZooKeeperGroupTest.java @@ -21,8 +21,6 @@ import java.util.List; import java.util.Map; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.camel.component.zookeepermaster.group.NodeState; import org.apache.camel.test.AvailablePortFinder; import org.apache.curator.framework.CuratorFramework; @@ -32,6 +30,8 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.json.JsonMapper; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; @@ -72,7 +72,10 @@ public void tearDown() throws IOException { private static void putChildData(ZooKeeperGroup group, String path, String container) throws Exception { NodeState node = new NodeState("test", container); ByteArrayOutputStream data = new ByteArrayOutputStream(); - new ObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).writeValue(data, node); + JsonMapper.builder() + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .build() + .writeValue(data, node); ChildData child = new ChildData<>(path, new Stat(), data.toByteArray(), node); group.putCurrentData(path, child); } diff --git a/core/camel-core/pom.xml b/core/camel-core/pom.xml index 9de7721550807..3f007d5ab47c0 100644 --- a/core/camel-core/pom.xml +++ b/core/camel-core/pom.xml @@ -219,12 +219,12 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind test - com.fasterxml.jackson.core + tools.jackson.core jackson-core test diff --git a/core/camel-yaml-io/pom.xml b/core/camel-yaml-io/pom.xml index fcd320adbf9c3..950bf779edc6f 100644 --- a/core/camel-yaml-io/pom.xml +++ b/core/camel-yaml-io/pom.xml @@ -51,7 +51,7 @@ camel-util-json - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-yaml diff --git a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/YamlWriter.java b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/YamlWriter.java index f4ef49a0d5b9c..449f1375d0560 100644 --- a/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/YamlWriter.java +++ b/core/camel-yaml-io/src/main/java/org/apache/camel/yaml/io/YamlWriter.java @@ -26,10 +26,6 @@ import java.util.Map; import java.util.StringJoiner; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; -import com.fasterxml.jackson.dataformat.yaml.YAMLMapper; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog; @@ -40,6 +36,10 @@ import org.apache.camel.util.URISupport; import org.apache.camel.util.json.JsonArray; import org.apache.camel.util.json.JsonObject; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.dataformat.yaml.YAMLMapper; +import tools.jackson.dataformat.yaml.YAMLWriteFeature; /** * YAML writer which uses Jackson to dump to yaml format. @@ -421,10 +421,11 @@ public String toYaml() { // load into jackson JsonNode jsonNodeTree = new ObjectMapper().readTree(arr.toJson()); // map to yaml via jackson - YAMLMapper mapper = new YAMLMapper(); - mapper.disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER); - mapper.enable(YAMLGenerator.Feature.MINIMIZE_QUOTES); - mapper.enable(YAMLGenerator.Feature.INDENT_ARRAYS_WITH_INDICATOR); + YAMLMapper mapper = YAMLMapper.builder() + .disable(YAMLWriteFeature.WRITE_DOC_START_MARKER) + .enable(YAMLWriteFeature.MINIMIZE_QUOTES) + .enable(YAMLWriteFeature.INDENT_ARRAYS_WITH_INDICATOR) + .build(); String jsonAsYaml = mapper.writeValueAsString(jsonNodeTree); // strip leading yaml indent of 2 spaces (because INDENT_ARRAYS_WITH_INDICATOR is enabled) StringJoiner sj = new StringJoiner("\n"); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java index e23f41cf8a745..5785b9e588886 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java @@ -35,10 +35,10 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; import com.github.freva.asciitable.AsciiTable; import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java index a171e09f24d91..c72735506da46 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java @@ -23,8 +23,8 @@ import java.time.Duration; import java.util.StringJoiner; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.util.FileUtil; public final class GistHelper { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java index b6dfa0972cd63..f8b1aa4e096ca 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java @@ -23,8 +23,8 @@ import java.time.Duration; import java.util.StringJoiner; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import org.apache.camel.util.AntPathMatcher; import org.apache.camel.util.FileUtil; diff --git a/dsl/camel-jbang/camel-jbang-it/pom.xml b/dsl/camel-jbang/camel-jbang-it/pom.xml index d0454aeb6afe4..d3a7c884ba58c 100644 --- a/dsl/camel-jbang/camel-jbang-it/pom.xml +++ b/dsl/camel-jbang/camel-jbang-it/pom.xml @@ -147,7 +147,7 @@ openapi-generator - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/dsl/camel-jbang/camel-jbang-plugin-generate/pom.xml b/dsl/camel-jbang/camel-jbang-plugin-generate/pom.xml index 71f03b160b4a3..e09290860b456 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-generate/pom.xml +++ b/dsl/camel-jbang/camel-jbang-plugin-generate/pom.xml @@ -89,7 +89,7 @@ ${project.version} - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeSchemaGenerator.java b/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeSchemaGenerator.java index a69fb639dca46..d22b316bf7b60 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeSchemaGenerator.java +++ b/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeSchemaGenerator.java @@ -20,8 +20,8 @@ import java.nio.file.Paths; import java.util.List; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import com.github.victools.jsonschema.generator.Option; import com.github.victools.jsonschema.generator.SchemaGenerator; import com.github.victools.jsonschema.generator.SchemaGeneratorConfig; diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java index edc4cf28bc049..efeb2ce435db2 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java @@ -28,12 +28,12 @@ import java.util.Optional; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.json.JsonMapper; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; import io.fabric8.kubernetes.api.model.APIGroup; import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java index 187423f4c33b9..6f1f9ef644bd9 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java @@ -29,7 +29,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import com.fasterxml.jackson.core.JsonProcessingException; +import tools.jackson.core.JsonProcessingException; import io.fabric8.knative.duck.v1.DestinationBuilder; import io.fabric8.knative.duck.v1.KReference; import io.fabric8.knative.duck.v1.KReferenceBuilder; diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/pom.xml b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/pom.xml index 7799f67dc744e..5fe4d64603108 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/pom.xml +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/pom.xml @@ -74,7 +74,7 @@ - com.fasterxml.jackson.core + tools.jackson.core jackson-databind diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java index f78fdb998cca8..dcaecdd1202c4 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java @@ -35,8 +35,8 @@ import javax.annotation.processing.Generated; import javax.lang.model.element.Modifier; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import com.squareup.javapoet.AnnotationSpec; import com.squareup.javapoet.ClassName; import com.squareup.javapoet.CodeBlock; diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java index a1d6f93289269..897e4194066c2 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java @@ -35,13 +35,13 @@ import java.util.stream.Stream; import java.util.stream.StreamSupport; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.MapperFeature; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.json.JsonMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; import org.apache.camel.maven.dsl.yaml.support.ToolingSupport; import org.apache.camel.tooling.util.FileUtil; import org.apache.camel.tooling.util.Strings; diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/Schema.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/Schema.java index 1ed7982034db4..d6842afac9d8b 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/Schema.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/Schema.java @@ -19,8 +19,8 @@ import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.ObjectNode; public class Schema { @JsonProperty diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/YamlProperties.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/YamlProperties.java index 69282c04c7a53..fb1062a629c3d 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/YamlProperties.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/YamlProperties.java @@ -16,7 +16,7 @@ */ package org.apache.camel.maven.dsl.yaml.support; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; import com.squareup.javapoet.AnnotationSpec; import org.apache.camel.tooling.util.Strings; diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml b/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml index 2ac9746bd2637..9a7082ac99a26 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml @@ -226,12 +226,12 @@ test - com.fasterxml.jackson.core + tools.jackson.core jackson-databind test - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-yaml test diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy index b5753649c37fd..1ee336cb30975 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy @@ -16,8 +16,8 @@ */ package org.apache.camel.dsl.yaml.support -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory +import tools.jackson.databind.ObjectMapper +import tools.jackson.dataformat.yaml.YAMLFactory import com.networknt.schema.JsonSchemaFactory import com.networknt.schema.SchemaValidatorsConfig import com.networknt.schema.SpecVersionDetector diff --git a/parent/pom.xml b/parent/pom.xml index 02abe3f6d4c80..a365f461e5f5c 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -173,7 +173,7 @@ 2.2.0 4.0.18 1.20.3 - 7.2.0 + 8.0.0 2.11 2.29.0 1.2.1 @@ -274,6 +274,7 @@ 2.20.2 2.20 3.0.3 + 3.0.0-rc2 2.22.3 0.15 3.5.3 @@ -3278,13 +3279,17 @@ - com.fasterxml.jackson + tools.jackson jackson-bom - ${jackson2-version} + ${jackson-version} import pom - + + com.fasterxml.jackson.core + jackson-annotations + ${jackson-annotations-version} + - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-xml - com.fasterxml.jackson.dataformat + tools.jackson.dataformat jackson-dataformat-yaml diff --git a/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/RestDslYamlGenerator.java b/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/RestDslYamlGenerator.java index 55d1bc9084c8d..cd0075bee8bd1 100644 --- a/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/RestDslYamlGenerator.java +++ b/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/RestDslYamlGenerator.java @@ -38,22 +38,21 @@ import org.xml.sax.InputSource; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.BooleanNode; -import com.fasterxml.jackson.databind.node.JsonNodeFactory; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.fasterxml.jackson.databind.node.TextNode; -import com.fasterxml.jackson.dataformat.xml.XmlMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.PathItem; import org.apache.camel.CamelContext; import org.apache.camel.model.rest.RestsDefinition; import org.apache.camel.util.ObjectHelper; import org.apache.camel.xml.LwModelToXMLDumper; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.BooleanNode; +import tools.jackson.databind.node.JsonNodeFactory; +import tools.jackson.databind.node.ObjectNode; +import tools.jackson.dataformat.xml.XmlMapper; +import tools.jackson.dataformat.yaml.YAMLMapper; +import tools.jackson.dataformat.yaml.YAMLWriteFeature; public class RestDslYamlGenerator extends RestDslGenerator { @@ -162,10 +161,10 @@ public String generate(final CamelContext context, boolean generateRoutes) throw if (generateRoutes) { for (Map.Entry entry : toTagData.entrySet()) { ObjectNode from = JsonNodeFactory.instance.objectNode(); - from.set("uri", new TextNode(entry.getKey())); + from.set("uri", JsonNodeFactory.instance.textNode(entry.getKey())); String description = entry.getValue(); if (description != null && !description.isBlank()) { - from.set("description", new TextNode(description)); + from.set("description", JsonNodeFactory.instance.textNode(description)); } ObjectNode route = JsonNodeFactory.instance.objectNode(); route.set("from", from); @@ -173,7 +172,7 @@ public String generate(final CamelContext context, boolean generateRoutes) throw } } - ObjectMapper mapper = new ObjectMapper(new YAMLFactory().disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)); + ObjectMapper mapper = YAMLMapper.builder().disable(YAMLWriteFeature.WRITE_DOC_START_MARKER).build(); return mapper.writeValueAsString(node); } @@ -206,7 +205,7 @@ private static void sortVerb(JsonNode node, String verb) { if (n.isObject()) { ObjectNode on = (ObjectNode) n; // sort the elements: id, path, description, consumes, produces, type, outType, param - Iterator it = on.fieldNames(); + Iterator it = on.propertyNames().iterator(); while (it.hasNext()) { names.add(it.next()); } From 00be30e8fd9522ddd46598a85bfb0ef99bb3a0a3 Mon Sep 17 00:00:00 2001 From: Tom Cunningham Date: Fri, 23 Jan 2026 11:59:17 -0500 Subject: [PATCH 2/2] Additional fixes for tests and Jackson 3 --- .../catalog/components/json-validator.json | 2 +- .../camel/catalog/components/salesforce.json | 4 +- .../camel/catalog/components/servicenow.json | 4 +- .../camel/catalog/test-infra/metadata.json | 544 +++++++++--------- .../catalog/CamelCatalogJsonSchemaTest.java | 10 +- .../camel/catalog/CamelCatalogTest.java | 4 +- .../camel/maven/htmlxlsx/model/ChildEip.java | 12 +- .../maven/htmlxlsx/model/Components.java | 8 +- .../maven/htmlxlsx/model/EipAttribute.java | 14 +- .../htmlxlsx/process/TestResultParser.java | 12 +- .../XmlToCamelRouteCoverageConverter.java | 12 +- .../process/TestJsonProcessingException.java | 4 +- .../process/XmlToCamelRouteCoverageTest.java | 4 +- components/camel-ai/camel-docling/pom.xml | 2 +- .../camel-ai/camel-langchain4j-chat/pom.xml | 2 +- .../camel-ai/camel-langchain4j-tools/pom.xml | 4 +- components/camel-ai/camel-neo4j/pom.xml | 2 +- components/camel-ai/camel-openai/pom.xml | 2 +- components/camel-ai/camel-qdrant/pom.xml | 2 +- components/camel-ai/pom.xml | 2 +- .../camel-aws/camel-aws-bedrock/pom.xml | 2 +- .../runtime/stream/BedrockStreamHandler.java | 1 + components/camel-aws/camel-aws2-ddb/pom.xml | 2 +- .../Ddb2JsonDataTypeTransformer.java | 4 +- .../Ddb2JsonDataTypeTransformerTest.java | 2 +- .../camel-cxf/camel-cxf-spring-rest/pom.xml | 2 +- .../camel-dhis2/camel-dhis2-component/pom.xml | 2 +- components/camel-flowable/pom.xml | 6 + .../camel-google/camel-google-sheets/pom.xml | 2 +- ...leSheetsJsonStructDataTypeTransformer.java | 2 +- .../camel-google-vertexai/pom.xml | 2 +- .../camel/groovy/xml/GroovyXmlDataFormat.java | 5 +- components/camel-iso8583/pom.xml | 2 +- components/camel-jackson-avro/pom.xml | 13 +- components/camel-jackson/pom.xml | 14 +- components/camel-jacksonxml/pom.xml | 6 + .../component/jacksonxml/TestPojoView.java | 1 + .../camel/component/jacksonxml/Views.java | 4 + components/camel-jetty-common/pom.xml | 2 +- components/camel-jetty/pom.xml | 10 +- .../rest/RestJettyCustomContentTypeTest.java | 6 +- .../RestJettyNoContentRestConfigTest.java | 7 +- .../jetty/rest/RestJettyNoContentTest.java | 7 +- .../jetty/rest/RestJettyPojoInOutTest.java | 11 +- .../JettyRestProducerPojoInOutTest.java | 17 +- components/camel-jms/pom.xml | 12 + components/camel-jq/pom.xml | 5 +- .../apache/camel/language/jq/JqFunctions.java | 12 +- .../apache/camel/language/JqLanguageTest.java | 6 +- .../jq/JqExpressionFromHeaderTest.java | 4 +- .../jq/JqExpressionFromPropertyTest.java | 4 +- .../language/jq/JqExpressionPojoTest.java | 4 +- .../language/jq/JqExpressionSimpleTest.java | 4 +- .../camel/language/jq/JqExpressionTest.java | 29 +- components/camel-jslt/pom.xml | 3 +- .../jslt/JsltEndpointConfigurer.java | 4 +- .../org/apache/camel/component/jslt/jslt.json | 2 +- .../camel/component/jslt/JsltEndpoint.java | 48 +- .../JsltBigDecimalCustomObjectMapperTest.java | 7 +- .../jsonpatch/JsonPatchProducer.java | 4 +- components/camel-json-validator/pom.xml | 6 + .../JsonValidatorEndpointConfigurer.java | 4 +- .../jsonvalidator/json-validator.json | 2 +- .../DefaultJsonUriSchemaLoader.java | 40 +- .../DefaultJsonValidationErrorHandler.java | 8 +- .../jsonvalidator/JsonUriSchemaLoader.java | 4 +- .../JsonValidationException.java | 20 +- .../jsonvalidator/JsonValidatorEndpoint.java | 46 +- .../JsonValidatorErrorHandler.java | 8 +- .../JsonValidationExceptionTest.java | 10 +- components/camel-jsonpath/pom.xml | 2 +- .../apache/camel/jsonpath/JsonPathEngine.java | 12 +- .../camel/jsonpath/CustomObjectMapper.java | 5 +- .../jsonpath/JsonPathCustomMapperTest.java | 17 +- .../jsonpath/JsonPathExpressionPojoTest.java | 2 +- .../jsonpath/JsonPathMapTransformTest.java | 8 +- components/camel-kafka/pom.xml | 2 +- components/camel-kamelet/pom.xml | 6 +- .../schema/DelegatingSchemaResolver.java | 6 +- components/camel-keycloak/pom.xml | 4 + .../security/KeycloakSecurityHelper.java | 4 +- .../security/KeycloakTokenIntrospector.java | 2 +- .../keycloak/security/KeycloakSecurityIT.java | 4 +- .../security/KeycloakSecurityTestInfraIT.java | 4 +- components/camel-kubernetes/pom.xml | 5 + .../cluster/utils/LockTestServer.java | 6 +- components/camel-lra/pom.xml | 2 +- .../service/lra/AbstractLRATestSupport.java | 4 +- components/camel-metrics/pom.xml | 8 +- .../MetricsMessageHistoryService.java | 2 +- .../routepolicy/MetricsRegistryService.java | 2 +- components/camel-mongodb-gridfs/pom.xml | 2 +- components/camel-mongodb/pom.xml | 2 +- .../component/mongodb/MongoDbEndpoint.java | 41 +- .../converters/MongoDbFallbackConverter.java | 2 +- components/camel-netty-http/pom.xml | 8 +- .../http/rest/RestNettyHttpPojoInOutTest.java | 11 +- components/camel-oauth/pom.xml | 2 +- .../ocsf/OcsfDataFormatConfigurer.java | 6 +- .../camel/dataformat/ocsf/OcsfDataFormat.java | 19 +- components/camel-opensearch/pom.xml | 3 +- .../opensearch/OpensearchConfiguration.java | 2 +- .../opensearch/OpensearchProducer.java | 4 +- .../OpensearchActionRequestConverter.java | 6 +- .../integration/OpensearchBulkIT.java | 2 +- .../integration/OpensearchClusterIndexIT.java | 2 +- ...ensearchGetSearchDeleteExistsUpdateIT.java | 4 +- components/camel-platform-http-vertx/pom.xml | 2 +- .../vertx/VertxPlatformHttpJacksonTest.java | 2 +- components/camel-pqc/pom.xml | 7 +- .../AwsSecretsManagerKeyLifecycleManager.java | 2 +- components/camel-pubnub/pom.xml | 6 + .../pubnub/PubNubOperationsTest.java | 4 +- components/camel-rest-openapi/pom.xml | 8 +- .../RestOpenApiRequestValidationTest.java | 2 +- .../codegen/ObjectDescriptions.java | 2 +- .../salesforce/codegen/SchemaExecution.java | 11 +- .../camel-salesforce-component/pom.xml | 11 + .../SalesforceComponentConfigurer.java | 4 +- .../SalesforceEndpointConfigurer.java | 4 +- .../component/salesforce/salesforce.json | 4 +- .../salesforce/StreamingApiConsumer.java | 31 +- .../api/FieldsToNullPropertyFilter.java | 6 +- .../api/MultiSelectPicklistDeserializer.java | 2 +- .../api/MultiSelectPicklistSerializer.java | 11 +- ...StringMultiSelectPicklistDeserializer.java | 9 +- .../StringMultiSelectPicklistSerializer.java | 6 +- .../salesforce/api/dto/AbstractDTOBase.java | 11 +- .../component/salesforce/api/dto/Limits.java | 8 +- .../api/dto/approval/ApprovalResult.java | 8 +- .../composite/SObjectCompositeResponse.java | 2 +- .../dto/composite/SObjectCompositeResult.java | 2 +- .../utils/AsNestedPropertyDeserializer.java | 10 +- .../api/utils/AsNestedPropertyResolver.java | 4 +- .../salesforce/api/utils/DateSerializer.java | 53 ++ .../api/utils/DateTimeHandling.java | 17 + .../api/utils/InstantDeserializer.java | 23 +- .../api/utils/InstantSerializer.java | 22 +- .../salesforce/api/utils/JsonUtils.java | 36 +- .../api/utils/LocalDateTimeDeserializer.java | 16 +- .../api/utils/LocalDateTimeSerializer.java | 23 +- .../api/utils/OffsetDateTimeDeserializer.java | 22 +- .../api/utils/OffsetDateTimeSerializer.java | 23 +- .../api/utils/OffsetTimeDeserializer.java | 21 +- .../api/utils/OffsetTimeSerializer.java | 23 +- .../salesforce/api/utils/TimeModule.java | 29 +- .../api/utils/ZonedDateTimeDeserializer.java | 22 +- .../api/utils/ZonedDateTimeSerializer.java | 48 ++ .../internal/SalesforceSession.java | 3 - .../client/DefaultBulkApiV2Client.java | 26 +- .../internal/processor/JsonRestProcessor.java | 11 +- .../processor/QueryResultIterator.java | 2 - .../internal/streaming/PushTopicHelper.java | 8 - .../salesforce/LoginConfigHelper.java | 24 +- .../api/MultiSelectPicklistJsonTest.java | 12 +- .../salesforce/api/dto/LimitsTest.java | 3 +- .../api/dto/approval/ApprovalRequestTest.java | 14 +- .../dto/approval/ApprovalRequestsTest.java | 8 +- .../api/dto/composite/SObjectBatchTest.java | 8 +- .../dto/composite/SObjectCompositeTest.java | 8 +- .../api/dto/composite/SObjectTreeTest.java | 5 +- .../api/utils/SalesforceTimeFormatsTest.java | 3 +- .../processor/JsonRestProcessorTest.java | 8 +- .../databind/DeserializationFeature.class | Bin 0 -> 3627 bytes .../tools/jackson/databind/ObjectMapper.class | Bin 0 -> 63884 bytes .../databind/SerializationFeature.class | Bin 0 -> 2870 bytes .../ser/ValueSerializerModifier.class | Bin 0 -> 6662 bytes .../ser/std/SimpleBeanPropertyFilter.class | Bin 0 -> 4755 bytes .../camel-salesforce-maven-plugin/pom.xml | 5 +- .../maven/CamelSalesforceMojoOutputTest.java | 2 +- .../camel/maven/SchemaMojoManualIT.java | 6 +- components/camel-servlet/pom.xml | 8 +- .../RestServletNoContentRestConfigTest.java | 5 +- .../rest/RestServletNoContentTest.java | 3 +- .../rest/RestServletPojoInOutTest.java | 5 +- .../camel-spring-ai-tools/pom.xml | 6 + .../camel-spring-ai/pom.xml | 1 + components/camel-telemetry-dev/pom.xml | 2 +- components/camel-undertow/pom.xml | 8 +- .../rest/RestUndertowHttpPojoInOutTest.java | 11 +- .../rest/RestUndertowHttpPojoTypeTest.java | 27 +- core/camel-support/pom.xml | 7 + coverage/pom.xml | 8 +- .../SalesforceComponentBuilderFactory.java | 7 +- .../ServicenowComponentBuilderFactory.java | 7 +- .../JsonValidatorEndpointBuilderFactory.java | 8 +- .../dsl/SalesforceEndpointBuilderFactory.java | 24 +- .../dsl/ServiceNowEndpointBuilderFactory.java | 8 +- .../core/commands/infra/InfraBaseCommand.java | 20 +- .../dsl/jbang/core/common/GistHelper.java | 12 +- .../dsl/jbang/core/common/GitHubHelper.java | 14 +- .../core/commands/mcp/TransformTools.java | 6 +- .../generate/CodeSchemaGenerator.java | 4 +- .../camel-jbang-plugin-kubernetes/pom.xml | 6 + .../commands/kubernetes/KubernetesHelper.java | 19 +- .../traits/knative/KnativeTrait.java | 4 +- .../validate/YamlValidateCommand.java | 8 +- dsl/camel-kamelet-main/pom.xml | 2 +- .../yaml/GenerateYamlDeserializersMojo.java | 4 +- .../dsl/yaml/GenerateYamlSchemaMojo.java | 17 +- .../dsl/yaml/support/YamlProperties.java | 2 +- .../dsl/yaml/validator/ValidateMojo.java | 12 +- .../dsl/yaml/validator/CamelYamlParser.java | 12 +- .../camel/dsl/yaml/validator/YamlParser.java | 18 +- .../dsl/yaml/validator/YamlValidator.java | 55 +- dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml | 4 +- .../dsl/yaml/support/YamlTestSupport.groovy | 32 +- parent/pom.xml | 12 +- .../camel-test-infra-openai-mock/pom.xml | 2 +- .../CamelTestInfraGenerateMetadataMojo.java | 4 +- .../openapi/RestDslYamlGenerator.java | 5 +- 211 files changed, 1347 insertions(+), 1086 deletions(-) create mode 100644 components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateSerializer.java create mode 100644 components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeSerializer.java create mode 100644 components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/DeserializationFeature.class create mode 100644 components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/ObjectMapper.class create mode 100644 components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/SerializationFeature.class create mode 100644 components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/ser/ValueSerializerModifier.class create mode 100644 components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/ser/std/SimpleBeanPropertyFilter.class diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/json-validator.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/json-validator.json index 8b4146fe30cad..b4c0f3d3c0407 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/json-validator.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/json-validator.json @@ -41,7 +41,7 @@ "disabledDeserializationFeatures": { "index": 7, "kind": "parameter", "displayName": "Disabled Deserialization Features", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Comma-separated list of Jackson DeserializationFeature enum values which will be disabled for parsing exchange body" }, "enabledDeserializationFeatures": { "index": 8, "kind": "parameter", "displayName": "Enabled Deserialization Features", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Comma-separated list of Jackson DeserializationFeature enum values which will be enabled for parsing exchange body" }, "errorHandler": { "index": 9, "kind": "parameter", "displayName": "Error Handler", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jsonvalidator.JsonValidatorErrorHandler", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom ValidatorErrorHandler. The default error handler captures the errors and throws an exception." }, - "objectMapper": { "index": 10, "kind": "parameter", "displayName": "Object Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "description": "The used Jackson object mapper" }, + "objectMapper": { "index": 10, "kind": "parameter", "displayName": "Object Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "description": "The used Jackson object mapper" }, "uriSchemaLoader": { "index": 11, "kind": "parameter", "displayName": "Uri Schema Loader", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jsonvalidator.JsonUriSchemaLoader", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom schema loader allowing for adding custom format validation. The default implementation will create a schema loader that tries to determine the schema version from the $schema property of the specified schema." } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/salesforce.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/salesforce.json index 5cb01f59ce9d3..7230dcbe0611c 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/salesforce.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/salesforce.json @@ -55,7 +55,7 @@ "notifyForOperations": { "index": 27, "kind": "property", "displayName": "Notify For Operations", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum", "enum": [ "ALL", "CREATE", "EXTENDED", "UPDATE" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version < 29.0)" }, "notifyForOperationUndelete": { "index": 28, "kind": "property", "displayName": "Notify For Operation Undelete", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Notify for un-delete operation, defaults to false (API version >= 29.0)" }, "notifyForOperationUpdate": { "index": 29, "kind": "property", "displayName": "Notify For Operation Update", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Notify for update operation, defaults to false (API version >= 29.0)" }, - "objectMapper": { "index": 30, "kind": "property", "displayName": "Object Mapper", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Custom Jackson ObjectMapper to use when serializing\/deserializing Salesforce objects." }, + "objectMapper": { "index": 30, "kind": "property", "displayName": "Object Mapper", "group": "common", "label": "", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Custom Jackson ObjectMapper to use when serializing\/deserializing Salesforce objects." }, "packages": { "index": 31, "kind": "property", "displayName": "Packages", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "In what packages are the generated DTO classes. Typically the classes would be generated using camel-salesforce-maven-plugin. Set it if using the generated DTOs to gain the benefit of using short SObject names in parameters\/header values. Multiple packages can be separated by comma." }, "pkChunking": { "index": 32, "kind": "property", "displayName": "Pk Chunking", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Use PK Chunking. Only for use in original Bulk API. Bulk 2.0 API performs PK chunking automatically, if necessary." }, "pkChunkingChunkSize": { "index": 33, "kind": "property", "displayName": "Pk Chunking Chunk Size", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Chunk size for use with PK Chunking. If unspecified, salesforce default is 100,000. Maximum size is 250,000." }, @@ -186,7 +186,7 @@ "notifyForOperations": { "index": 24, "kind": "parameter", "displayName": "Notify For Operations", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum", "enum": [ "ALL", "CREATE", "EXTENDED", "UPDATE" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version < 29.0)" }, "notifyForOperationUndelete": { "index": 25, "kind": "parameter", "displayName": "Notify For Operation Undelete", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Notify for un-delete operation, defaults to false (API version >= 29.0)" }, "notifyForOperationUpdate": { "index": 26, "kind": "parameter", "displayName": "Notify For Operation Update", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Notify for update operation, defaults to false (API version >= 29.0)" }, - "objectMapper": { "index": 27, "kind": "parameter", "displayName": "Object Mapper", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Custom Jackson ObjectMapper to use when serializing\/deserializing Salesforce objects." }, + "objectMapper": { "index": 27, "kind": "parameter", "displayName": "Object Mapper", "group": "common", "label": "", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Custom Jackson ObjectMapper to use when serializing\/deserializing Salesforce objects." }, "pkChunking": { "index": 28, "kind": "parameter", "displayName": "Pk Chunking", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Use PK Chunking. Only for use in original Bulk API. Bulk 2.0 API performs PK chunking automatically, if necessary." }, "pkChunkingChunkSize": { "index": 29, "kind": "parameter", "displayName": "Pk Chunking Chunk Size", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Chunk size for use with PK Chunking. If unspecified, salesforce default is 100,000. Maximum size is 250,000." }, "pkChunkingParent": { "index": 30, "kind": "parameter", "displayName": "Pk Chunking Parent", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Specifies the parent object when you're enabling PK chunking for queries on sharing objects. The chunks are based on the parent object's records rather than the sharing object's records. For example, when querying on AccountShare, specify Account as the parent object. PK chunking is supported for sharing objects as long as the parent object is supported." }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/servicenow.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/servicenow.json index 69593f4ba4d4c..6a9f799bc4171 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/servicenow.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/servicenow.json @@ -57,7 +57,7 @@ "dateTimeFormat": { "index": 29, "kind": "property", "displayName": "Date Time Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "yyyy-MM-dd HH:mm:ss", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The date-time format used for Json serialization\/deserialization" }, "httpClientPolicy": { "index": 30, "kind": "property", "displayName": "Http Client Policy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.cxf.transports.http.configuration.HTTPClientPolicy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "To configure http-client" }, "instanceName": { "index": 31, "kind": "property", "displayName": "Instance Name", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The ServiceNow instance name" }, - "mapper": { "index": 32, "kind": "property", "displayName": "Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Sets Jackson's ObjectMapper to use for request\/reply" }, + "mapper": { "index": 32, "kind": "property", "displayName": "Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Sets Jackson's ObjectMapper to use for request\/reply" }, "proxyAuthorizationPolicy": { "index": 33, "kind": "property", "displayName": "Proxy Authorization Policy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.cxf.configuration.security.ProxyAuthorizationPolicy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "To configure proxy authentication" }, "retrieveTargetRecordOnImport": { "index": 34, "kind": "property", "displayName": "Retrieve Target Record On Import", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Set this parameter to true to retrieve the target record when using import set api. The import set result is then replaced by the target record" }, "timeFormat": { "index": 35, "kind": "property", "displayName": "Time Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HH:mm:ss", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The time format used for Json serialization\/deserialization" }, @@ -170,7 +170,7 @@ "dateFormat": { "index": 27, "kind": "parameter", "displayName": "Date Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "yyyy-MM-dd", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The date format used for Json serialization\/deserialization" }, "dateTimeFormat": { "index": 28, "kind": "parameter", "displayName": "Date Time Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "yyyy-MM-dd HH:mm:ss", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The date-time format used for Json serialization\/deserialization" }, "httpClientPolicy": { "index": 29, "kind": "parameter", "displayName": "Http Client Policy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.cxf.transports.http.configuration.HTTPClientPolicy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "To configure http-client" }, - "mapper": { "index": 30, "kind": "parameter", "displayName": "Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Sets Jackson's ObjectMapper to use for request\/reply" }, + "mapper": { "index": 30, "kind": "parameter", "displayName": "Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Sets Jackson's ObjectMapper to use for request\/reply" }, "proxyAuthorizationPolicy": { "index": 31, "kind": "parameter", "displayName": "Proxy Authorization Policy", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.cxf.configuration.security.ProxyAuthorizationPolicy", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "To configure proxy authentication" }, "retrieveTargetRecordOnImport": { "index": 32, "kind": "parameter", "displayName": "Retrieve Target Record On Import", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "Set this parameter to true to retrieve the target record when using import set api. The import set result is then replaced by the target record" }, "timeFormat": { "index": 33, "kind": "parameter", "displayName": "Time Format", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "HH:mm:ss", "configurationClass": "org.apache.camel.component.servicenow.ServiceNowConfiguration", "configurationField": "configuration", "description": "The time format used for Json serialization\/deserialization" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/test-infra/metadata.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/test-infra/metadata.json index 8e82912060256..cf2cae427b2d2 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/test-infra/metadata.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/test-infra/metadata.json @@ -1,613 +1,613 @@ [ { - "service" : "org.apache.camel.test.infra.milvus.services.MilvusInfraService", - "description" : "Milvus Vector Database", - "implementation" : "org.apache.camel.test.infra.milvus.services.MilvusLocalContainerInfraService", "alias" : [ "milvus" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-milvus", + "description" : "Milvus Vector Database", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.milvus.services.MilvusLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.milvus.services.MilvusInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSKinesisLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "kinesis" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSKinesisLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSTranscribeLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "transcribe" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSTranscribeLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSCloudWatchLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "cloud-watch" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSCloudWatchLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.iggy.services.IggyInfraService", - "description" : "Iggy distributed message streaming platform", - "implementation" : "org.apache.camel.test.infra.iggy.services.IggyLocalContainerInfraService", "alias" : [ "iggy" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-iggy", + "description" : "Iggy distributed message streaming platform", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.iggy.services.IggyLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.iggy.services.IggyInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSQSLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "sqs" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSQSLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.zookeeper.services.ZooKeeperInfraService", - "description" : "Zookeeper is a server for highly reliable distributed coordination of cloud applications", - "implementation" : "org.apache.camel.test.infra.zookeeper.services.ZooKeeperLocalContainerInfraService", "alias" : [ "zookeeper" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-zookeeper", + "description" : "Zookeeper is a server for highly reliable distributed coordination of cloud applications", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.zookeeper.services.ZooKeeperLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.zookeeper.services.ZooKeeperInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSTSLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "sts" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSTSLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.redis.services.RedisInfraService", - "description" : "In Memory Database", - "implementation" : "org.apache.camel.test.infra.redis.services.RedisLocalContainerInfraService", "alias" : [ "redis" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-redis", + "description" : "In Memory Database", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.redis.services.RedisLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.redis.services.RedisInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.elasticsearch.services.ElasticSearchInfraService", - "description" : "NoSQL Database Elasticsearch", - "implementation" : "org.apache.camel.test.infra.elasticsearch.services.ElasticSearchLocalContainerInfraService", "alias" : [ "elasticsearch" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-elasticsearch", + "description" : "NoSQL Database Elasticsearch", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.elasticsearch.services.ElasticSearchLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.elasticsearch.services.ElasticSearchInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService", - "description" : "Apache Kafka, Distributed event streaming platform", - "implementation" : "org.apache.camel.test.infra.kafka.services.StrimziInfraService", "alias" : [ "kafka" ], "aliasImplementation" : [ "strimzi" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-kafka", + "description" : "Apache Kafka, Distributed event streaming platform", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.kafka.services.StrimziInfraService", + "service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService", - "description" : "Apache Kafka, Distributed event streaming platform", - "implementation" : "org.apache.camel.test.infra.kafka.services.ConfluentInfraService", "alias" : [ "kafka" ], "aliasImplementation" : [ "confluent" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-kafka", + "description" : "Apache Kafka, Distributed event streaming platform", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.kafka.services.ConfluentInfraService", + "service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.nats.services.NatsInfraService", - "description" : "Messaging Platform NATS", - "implementation" : "org.apache.camel.test.infra.nats.services.NatsLocalContainerInfraService", "alias" : [ "nats" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-nats", + "description" : "Messaging Platform NATS", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.nats.services.NatsLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.nats.services.NatsInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSKMSLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "kms" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSKMSLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.postgres.services.PostgresInfraService", - "description" : "Postgres SQL Database", - "implementation" : "org.apache.camel.test.infra.postgres.services.PostgresLocalContainerInfraService", "alias" : [ "postgres" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-postgres", + "description" : "Postgres SQL Database", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.postgres.services.PostgresLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.postgres.services.PostgresInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService", - "description" : "Apache Kafka, Distributed event streaming platform", - "implementation" : "org.apache.camel.test.infra.kafka.services.RedpandaInfraService", "alias" : [ "kafka" ], "aliasImplementation" : [ "redpanda" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-kafka", + "description" : "Apache Kafka, Distributed event streaming platform", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.kafka.services.RedpandaInfraService", + "service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.hashicorp.vault.services.HashicorpVaultInfraService", - "description" : "Vault is a tool for securely accessing secrets", - "implementation" : "org.apache.camel.test.infra.hashicorp.vault.services.HashicorpVaultLocalContainerInfraService", "alias" : [ "hashicorp" ], "aliasImplementation" : [ "vault" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-hashicorp-vault", + "description" : "Vault is a tool for securely accessing secrets", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.hashicorp.vault.services.HashicorpVaultLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.hashicorp.vault.services.HashicorpVaultInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSNSLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "sns" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSNSLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.artemis.services.ArtemisInfraService", - "description" : "Apache Artemis is an open source message broker", - "implementation" : "org.apache.camel.test.infra.artemis.services.ArtemisAMQPInfraService", "alias" : [ "artemis" ], "aliasImplementation" : [ "amqp" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-artemis", + "description" : "Apache Artemis is an open source message broker", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.artemis.services.ArtemisAMQPInfraService", + "service" : "org.apache.camel.test.infra.artemis.services.ArtemisInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.solr.services.SolrInfraService", - "description" : "Apache Solr is a Search Platform", - "implementation" : "org.apache.camel.test.infra.solr.services.SolrLocalContainerInfraService", "alias" : [ "solr" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-solr", + "description" : "Apache Solr is a Search Platform", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.solr.services.SolrLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.solr.services.SolrInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.couchbase.services.CouchbaseInfraService", - "description" : "NoSQL database Couchbase", - "implementation" : "org.apache.camel.test.infra.couchbase.services.CouchbaseLocalContainerInfraService", "alias" : [ "couchbase" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-couchbase", + "description" : "NoSQL database Couchbase", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.couchbase.services.CouchbaseLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.couchbase.services.CouchbaseInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSDynamodbLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "dynamodb", "dynamo-db" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSDynamodbLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.couchdb.services.CouchDbInfraService", - "description" : "SQL Clustered database CouchDB", - "implementation" : "org.apache.camel.test.infra.couchdb.services.CouchDbLocalContainerInfraService", "alias" : [ "couchdb" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-couchdb", + "description" : "SQL Clustered database CouchDB", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.couchdb.services.CouchDbLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.couchdb.services.CouchDbInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.keycloak.services.KeycloakInfraService", - "description" : "Identity and access management solution", - "implementation" : "org.apache.camel.test.infra.keycloak.services.KeycloakLocalContainerInfraService", "alias" : [ "keycloak" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-keycloak", + "description" : "Identity and access management solution", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.keycloak.services.KeycloakLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.keycloak.services.KeycloakInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.hivemq.services.HiveMQInfraService", - "description" : "MQTT Platform HiveMQ", - "implementation" : "org.apache.camel.test.infra.hivemq.services.LocalHiveMQInfraService", "alias" : [ "hive-mq" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-hivemq", + "description" : "MQTT Platform HiveMQ", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.hivemq.services.LocalHiveMQInfraService", + "service" : "org.apache.camel.test.infra.hivemq.services.HiveMQInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.ibmmq.services.IbmMQInfraService", - "description" : "IBM MQ messaging middleware", - "implementation" : "org.apache.camel.test.infra.ibmmq.services.IbmMQLocalContainerInfraService", "alias" : [ "ibmmq" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-ibmmq", + "description" : "IBM MQ messaging middleware", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.ibmmq.services.IbmMQLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.ibmmq.services.IbmMQInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSS3LocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "s3" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSS3LocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.smb.services.SmbLocalContainerInfraService", - "description" : "SAMBA File Server", - "implementation" : "org.apache.camel.test.infra.smb.services.SmbLocalContainerInfraService", "alias" : [ "smb" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-smb", + "description" : "SAMBA File Server", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.smb.services.SmbLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.smb.services.SmbLocalContainerInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.openldap.services.OpenldapInfraService", - "description" : "OpenLDAP is an implementation of the Lightweight Directory Access Protocol", - "implementation" : "org.apache.camel.test.infra.openldap.services.OpenldapLocalContainerInfraService", "alias" : [ "openldap" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-openldap", + "description" : "OpenLDAP is an implementation of the Lightweight Directory Access Protocol", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.openldap.services.OpenldapLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.openldap.services.OpenldapInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.xmpp.services.XmppInfraService", - "description" : "Test XMPP Server", - "implementation" : "org.apache.camel.test.infra.xmpp.services.XmppLocalContainerInfraService", "alias" : [ "xmpp" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-xmpp", + "description" : "Test XMPP Server", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.xmpp.services.XmppLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.xmpp.services.XmppInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.pulsar.services.PulsarInfraService", - "description" : "Distributed messaging and streaming platform", - "implementation" : "org.apache.camel.test.infra.pulsar.services.PulsarLocalContainerInfraService", "alias" : [ "pulsar" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-pulsar", + "description" : "Distributed messaging and streaming platform", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.pulsar.services.PulsarLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.pulsar.services.PulsarInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.artemis.services.ArtemisInfraService", - "description" : "Apache Artemis is an open source message broker", - "implementation" : "org.apache.camel.test.infra.artemis.services.ArtemisAllInfraService", "alias" : [ "artemis" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-artemis", + "description" : "Apache Artemis is an open source message broker", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.artemis.services.ArtemisAllInfraService", + "service" : "org.apache.camel.test.infra.artemis.services.ArtemisInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSSMLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "ssm" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSSMLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSLambdaLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "lambda" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSLambdaLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.google.pubsub.services.GooglePubSubInfraService", - "description" : "Google Cloud SDK Tool", - "implementation" : "org.apache.camel.test.infra.google.pubsub.services.GooglePubSubLocalContainerInfraService", "alias" : [ "google" ], "aliasImplementation" : [ "pub-sub" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-google-pubsub", + "description" : "Google Cloud SDK Tool", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.google.pubsub.services.GooglePubSubLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.google.pubsub.services.GooglePubSubInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.chatscript.services.ChatScriptInfraService", - "description" : "ChatBot Engine", - "implementation" : "org.apache.camel.test.infra.chatscript.services.ChatScriptLocalContainerInfraService", "alias" : [ "chat-script" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-chatscript", + "description" : "ChatBot Engine", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.chatscript.services.ChatScriptLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.chatscript.services.ChatScriptInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.arangodb.services.ArangoDBInfraService", - "description" : "ArangoDB is a multi-model database for high-performance applications.", - "implementation" : "org.apache.camel.test.infra.arangodb.services.ArangoDBLocalContainerInfraService", "alias" : [ "arangodb" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-arangodb", + "description" : "ArangoDB is a multi-model database for high-performance applications.", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.arangodb.services.ArangoDBLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.arangodb.services.ArangoDBInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.ignite.services.IgniteInfraService", - "description" : "Distributed Database Apache Ignite", - "implementation" : "org.apache.camel.test.infra.ignite.services.IgniteEmbeddedInfraService", "alias" : [ "ignite" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-ignite", + "description" : "Distributed Database Apache Ignite", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.ignite.services.IgniteEmbeddedInfraService", + "service" : "org.apache.camel.test.infra.ignite.services.IgniteInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.rabbitmq.services.RabbitMQInfraService", - "description" : "Messaging and streaming broker", - "implementation" : "org.apache.camel.test.infra.rabbitmq.services.RabbitMQLocalContainerInfraService", "alias" : [ "rabbitmq" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-rabbitmq", + "description" : "Messaging and streaming broker", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.rabbitmq.services.RabbitMQLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.rabbitmq.services.RabbitMQInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.mosquitto.services.MosquittoInfraService", - "description" : "Mosquitto is a message broker that implements MQTT protocol", - "implementation" : "org.apache.camel.test.infra.mosquitto.services.MosquittoLocalContainerInfraService", "alias" : [ "mosquitto" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-mosquitto", + "description" : "Mosquitto is a message broker that implements MQTT protocol", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.mosquitto.services.MosquittoLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.mosquitto.services.MosquittoInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.neo4j.services.Neo4jInfraService", - "description" : "Neo4j Database", - "implementation" : "org.apache.camel.test.infra.neo4j.services.Neo4jLocalContainerInfraService", "alias" : [ "neo4j" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-neo4j", + "description" : "Neo4j Database", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.neo4j.services.Neo4jLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.neo4j.services.Neo4jInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.rocketmq.services.RocketMQInfraService", - "description" : "Apache RocketMQ is a distributed messaging and streaming platform", - "implementation" : "org.apache.camel.test.infra.rocketmq.services.RocketMQContainerInfraService", "alias" : [ "rocketmq" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-rocketmq", + "description" : "Apache RocketMQ is a distributed messaging and streaming platform", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.rocketmq.services.RocketMQContainerInfraService", + "service" : "org.apache.camel.test.infra.rocketmq.services.RocketMQInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSConfigLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "config" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSConfigLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSEventBridgeLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "event-bridge" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSEventBridgeLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSecretsManagerLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "secrets-manager" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSSecretsManagerLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.cassandra.services.CassandraInfraService", - "description" : "Apache Cassandra NoSQL Database", - "implementation" : "org.apache.camel.test.infra.cassandra.services.CassandraLocalContainerInfraService", "alias" : [ "cassandra" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-cassandra", + "description" : "Apache Cassandra NoSQL Database", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.cassandra.services.CassandraLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.cassandra.services.CassandraInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSEC2LocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "ec2" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSEC2LocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.hazelcast.services.HazelcastInfraService", - "description" : "In Memory Database Hazelcast", - "implementation" : "org.apache.camel.test.infra.hazelcast.services.HazelcastEmbeddedInfraService", "alias" : [ "hazelcast" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-hazelcast", + "description" : "In Memory Database Hazelcast", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.hazelcast.services.HazelcastEmbeddedInfraService", + "service" : "org.apache.camel.test.infra.hazelcast.services.HazelcastInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.hivemq.services.HiveMQInfraService", - "description" : "MQTT Platform HiveMQ", - "implementation" : "org.apache.camel.test.infra.hivemq.services.LocalHiveMQSparkplugTCKInfraService", "alias" : [ "hive-mq" ], "aliasImplementation" : [ "sparkplug" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-hivemq", + "description" : "MQTT Platform HiveMQ", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.hivemq.services.LocalHiveMQSparkplugTCKInfraService", + "service" : "org.apache.camel.test.infra.hivemq.services.HiveMQInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.microprofile.lra.services.MicroprofileLRAInfraService", - "description" : "Transaction Manager for microservices that is based on the SAGA pattern for distributed transaction.", - "implementation" : "org.apache.camel.test.infra.microprofile.lra.services.MicroprofileLRALocalContainerInfraService", "alias" : [ "microprofile" ], "aliasImplementation" : [ "lra" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-microprofile-lra", + "description" : "Transaction Manager for microservices that is based on the SAGA pattern for distributed transaction.", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.microprofile.lra.services.MicroprofileLRALocalContainerInfraService", + "service" : "org.apache.camel.test.infra.microprofile.lra.services.MicroprofileLRAInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.minio.services.MinioInfraService", - "description" : "MinIO Object Storage, S3 compatible", - "implementation" : "org.apache.camel.test.infra.minio.services.MinioLocalContainerInfraService", "alias" : [ "minio" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-minio", + "description" : "MinIO Object Storage, S3 compatible", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.minio.services.MinioLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.minio.services.MinioInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService", - "description" : "Apache Kafka, Distributed event streaming platform", - "implementation" : "org.apache.camel.test.infra.kafka.services.ContainerLocalKafkaInfraService", "alias" : [ "kafka" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-kafka", + "description" : "Apache Kafka, Distributed event streaming platform", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.kafka.services.ContainerLocalKafkaInfraService", + "service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.azure.common.services.AzureInfraService", - "description" : "Local Azure services with Azurite", - "implementation" : "org.apache.camel.test.infra.azure.storage.queue.services.AzureStorageQueueLocalContainerInfraService", "alias" : [ "azure" ], "aliasImplementation" : [ "storage-queue" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-azure-storage-queue", + "description" : "Local Azure services with Azurite", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.azure.storage.queue.services.AzureStorageQueueLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.azure.common.services.AzureInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService", - "description" : "Embedded SFTP Server", - "implementation" : "org.apache.camel.test.infra.ftp.services.embedded.SftpEmbeddedInfraService", "alias" : [ "sftp" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-ftp", + "description" : "Embedded SFTP Server", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.ftp.services.embedded.SftpEmbeddedInfraService", + "service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.infinispan.services.InfinispanInfraService", - "description" : "Distributed Database For High‑Performance Applications With In‑Memory Speed", - "implementation" : "org.apache.camel.test.infra.infinispan.services.InfinispanLocalContainerInfraService", "alias" : [ "infinispan" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-infinispan", + "description" : "Distributed Database For High‑Performance Applications With In‑Memory Speed", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.infinispan.services.InfinispanLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.infinispan.services.InfinispanInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.weaviate.services.WeaviateInfraService", - "description" : "Weaviate Vector Database", - "implementation" : "org.apache.camel.test.infra.weaviate.services.WeaviateLocalContainerInfraService", "alias" : [ "weaviate" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-weaviate", + "description" : "Weaviate Vector Database", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.weaviate.services.WeaviateLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.weaviate.services.WeaviateInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.consul.services.ConsulInfraService", - "description" : "Consul is a service networking solution", - "implementation" : "org.apache.camel.test.infra.consul.services.ConsulLocalContainerInfraService", "alias" : [ "consul" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-consul", + "description" : "Consul is a service networking solution", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.consul.services.ConsulLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.consul.services.ConsulInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.qdrant.services.QdrantInfraService", - "description" : "Vector Database and Vector Search Engine", - "implementation" : "org.apache.camel.test.infra.qdrant.services.QdrantLocalContainerInfraService", "alias" : [ "qdrant" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-qdrant", + "description" : "Vector Database and Vector Search Engine", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.qdrant.services.QdrantLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.qdrant.services.QdrantInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService", - "description" : "Embedded FTPS Server", - "implementation" : "org.apache.camel.test.infra.ftp.services.embedded.FtpsEmbeddedInfraService", "alias" : [ "ftps" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-ftp", + "description" : "Embedded FTPS Server", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.ftp.services.embedded.FtpsEmbeddedInfraService", + "service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.ollama.services.OllamaInfraService", - "description" : "Build and run LLMs with Ollama", - "implementation" : "org.apache.camel.test.infra.ollama.services.OllamaLocalContainerInfraService", "alias" : [ "ollama" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-ollama", + "description" : "Build and run LLMs with Ollama", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.ollama.services.OllamaLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.ollama.services.OllamaInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.azure.common.services.AzureInfraService", - "description" : "Local Azure services with Azurite", - "implementation" : "org.apache.camel.test.infra.azure.storage.blob.services.AzureStorageBlobLocalContainerInfraService", "alias" : [ "azure" ], "aliasImplementation" : [ "storage-blob" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-azure-storage-blob", + "description" : "Local Azure services with Azurite", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.azure.storage.blob.services.AzureStorageBlobLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.azure.common.services.AzureInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.torchserve.services.TorchServeInfraService", - "description" : "TorchServe is a flexible tool for serving PyTorch", - "implementation" : "org.apache.camel.test.infra.torchserve.services.TorchServeLocalContainerInfraService", "alias" : [ "torch-serve" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-torchserve", + "description" : "TorchServe is a flexible tool for serving PyTorch", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.torchserve.services.TorchServeLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.torchserve.services.TorchServeInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.docling.services.DoclingInfraService", - "description" : "Document processing and conversion service", - "implementation" : "org.apache.camel.test.infra.docling.services.DoclingLocalContainerInfraService", "alias" : [ "docling" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-docling", + "description" : "Document processing and conversion service", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.docling.services.DoclingLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.docling.services.DoclingInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", - "description" : "Local AWS Services with LocalStack", - "implementation" : "org.apache.camel.test.infra.aws2.services.AWSIAMLocalContainerInfraService", "alias" : [ "aws" ], "aliasImplementation" : [ "iam" ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-aws-v2", + "description" : "Local AWS Services with LocalStack", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.aws2.services.AWSIAMLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.aws.common.services.AWSInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.fhir.services.FhirInfraService", - "description" : "HAPI FHIR RESTful test server", - "implementation" : "org.apache.camel.test.infra.fhir.services.FhirLocalContainerInfraService", "alias" : [ "fhir" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-fhir", + "description" : "HAPI FHIR RESTful test server", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.fhir.services.FhirLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.fhir.services.FhirInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.pinecone.services.PineconeInfraService", - "description" : "Pinecone Vector Database", - "implementation" : "org.apache.camel.test.infra.pinecone.services.PineconeLocalContainerInfraService", "alias" : [ "pinecone" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-pinecone", + "description" : "Pinecone Vector Database", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.pinecone.services.PineconeLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.pinecone.services.PineconeInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService", - "description" : "Embedded FTP Server", - "implementation" : "org.apache.camel.test.infra.ftp.services.embedded.FtpEmbeddedInfraService", "alias" : [ "ftp" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-ftp", + "description" : "Embedded FTP Server", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.ftp.services.embedded.FtpEmbeddedInfraService", + "service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService", "version" : "4.19.0-SNAPSHOT" }, { - "service" : "org.apache.camel.test.infra.mongodb.services.MongoDBInfraService", - "description" : "MongoDB NoSql Database", - "implementation" : "org.apache.camel.test.infra.mongodb.services.MongoDBLocalContainerInfraService", "alias" : [ "mongodb" ], "aliasImplementation" : [ ], - "groupId" : "org.apache.camel", "artifactId" : "camel-test-infra-mongodb", + "description" : "MongoDB NoSql Database", + "groupId" : "org.apache.camel", + "implementation" : "org.apache.camel.test.infra.mongodb.services.MongoDBLocalContainerInfraService", + "service" : "org.apache.camel.test.infra.mongodb.services.MongoDBInfraService", "version" : "4.19.0-SNAPSHOT" } ] \ No newline at end of file diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java index 7813471d3a039..ea2ee16faf31e 100644 --- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java +++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogJsonSchemaTest.java @@ -23,13 +23,13 @@ import java.util.Map; import java.util.stream.Stream; -import tools.jackson.core.JsonProcessingException; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -64,7 +64,7 @@ static Stream models() { @ParameterizedTest @MethodSource("componentCatalog") - void testValidateJsonComponent(String name) throws JsonProcessingException { + void testValidateJsonComponent(String name) throws JacksonException { String json = CATALOG.componentJSonSchema(name); LOG.info("Validating {} component", name); @@ -88,7 +88,7 @@ private void validateComponentSyntax(String name, JsonNode tree) { List pathProperties = new ArrayList<>(); List requiredProperties = new ArrayList<>(); - Iterator> it = tree.get("properties").fields(); + Iterator> it = tree.get("properties").properties().iterator(); while (it.hasNext()) { Map.Entry property = it.next(); if ("path".equals(property.getValue().get("kind").textValue())) { diff --git a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java index b3980637a4040..f0ba7c24db430 100644 --- a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java +++ b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java @@ -26,8 +26,6 @@ import java.util.Map; import java.util.stream.Stream; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.tooling.model.ArtifactModel; import org.apache.camel.tooling.model.ComponentModel; import org.apache.camel.tooling.model.DataFormatModel; @@ -43,6 +41,8 @@ import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.catalog.impl.CatalogHelper.loadText; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/ChildEip.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/ChildEip.java index c1feffa67ea52..445cc996a58d2 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/ChildEip.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/ChildEip.java @@ -21,9 +21,10 @@ import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; -import tools.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; import tools.jackson.databind.DeserializationFeature; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class ChildEip { @@ -37,9 +38,10 @@ public class ChildEip { protected ObjectMapper objectMapper() { if (OBJECT_MAPPER == null) { - OBJECT_MAPPER = new ObjectMapper(); - OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - OBJECT_MAPPER.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); + OBJECT_MAPPER = JsonMapper.builder() + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY) + .build(); } return OBJECT_MAPPER; @@ -73,7 +75,7 @@ public void setEipAttribute(String key, Object value) { String childJson = objectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(value); EipAttribute eipAttribute = objectMapper().readValue(childJson, EipAttribute.class); eipAttributeMap.put(key, eipAttribute); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } } else { diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/Components.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/Components.java index df33d71d6c746..54a0ed2353aad 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/Components.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/Components.java @@ -23,20 +23,22 @@ import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; -import tools.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; import tools.jackson.core.type.TypeReference; import tools.jackson.databind.DeserializationFeature; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class Components { private Map> attributeMap = new HashMap<>(); @JsonIgnore - private final ObjectMapper objectMapper = new ObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); + private final ObjectMapper objectMapper + = JsonMapper.builder().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY).build(); @JsonAnySetter - public void setAttribute(String key, Object value) throws JsonProcessingException { + public void setAttribute(String key, Object value) throws JacksonException { List listValue; diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/EipAttribute.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/EipAttribute.java index 4428dc9561d10..47cdd0203c82c 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/EipAttribute.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/model/EipAttribute.java @@ -25,9 +25,10 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonIgnore; -import tools.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; import tools.jackson.databind.DeserializationFeature; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import tools.jackson.databind.type.CollectionType; public class EipAttribute implements Comparable { @@ -50,9 +51,10 @@ public class EipAttribute implements Comparable { protected ObjectMapper objectMapper() { if (OBJECT_MAPPER == null) { - OBJECT_MAPPER = new ObjectMapper(); - OBJECT_MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - OBJECT_MAPPER.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); + OBJECT_MAPPER = JsonMapper.builder() + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY) + .build(); } return OBJECT_MAPPER; @@ -112,7 +114,7 @@ public void setProperty(String key, Object value) { } childEipMap.put(key, Collections.singletonList(childEip)); properties.remove(key); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } } else if (value instanceof List) { @@ -122,7 +124,7 @@ public void setProperty(String key, Object value) { List childEipList = objectMapper().readValue(childJson, javaType); childEipMap.put(key, childEipList); properties.remove(key); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { throw new RuntimeException(e); } } diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/TestResultParser.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/TestResultParser.java index 28d36af6606f1..4a79aa77dd47b 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/TestResultParser.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/TestResultParser.java @@ -19,18 +19,20 @@ import java.util.List; import java.util.Map; -import tools.jackson.core.JsonProcessingException; -import tools.jackson.databind.DeserializationFeature; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.maven.htmlxlsx.model.CamelContextRouteCoverage; import org.apache.camel.maven.htmlxlsx.model.Components; import org.apache.camel.maven.htmlxlsx.model.Route; import org.apache.camel.maven.htmlxlsx.model.Routes; import org.apache.camel.maven.htmlxlsx.model.TestResult; +import tools.jackson.core.JacksonException; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class TestResultParser { - private final ObjectMapper objectMapper = new ObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); + private final ObjectMapper objectMapper + = JsonMapper.builder().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY).build(); public TestResult parse(TestResult testResult) { @@ -56,7 +58,7 @@ protected Components components(Route route) { Map componentsMap = route.getComponentsMap(); String asString = objectMapper().writeValueAsString(componentsMap); components = objectMapper().readValue(asString, Components.class); - } catch (JsonProcessingException ex) { + } catch (JacksonException ex) { throw new RuntimeException(ex); } diff --git a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageConverter.java b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageConverter.java index f4082d31a90e0..5b809a49a89d1 100644 --- a/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageConverter.java +++ b/catalog/camel-report-maven-plugin/src/main/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageConverter.java @@ -18,15 +18,17 @@ import java.util.Map; -import tools.jackson.core.JsonProcessingException; +import org.apache.camel.maven.htmlxlsx.model.TestResult; +import tools.jackson.core.JacksonException; import tools.jackson.databind.DeserializationFeature; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import tools.jackson.dataformat.xml.XmlMapper; -import org.apache.camel.maven.htmlxlsx.model.TestResult; public class XmlToCamelRouteCoverageConverter { - private final ObjectMapper objectMapper = new ObjectMapper().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); + private final ObjectMapper objectMapper + = JsonMapper.builder().enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY).build(); private final XmlMapper xmlMapper = new XmlMapper(); @@ -40,12 +42,12 @@ public TestResult convert(String source) { String json = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); return readValue(json); - } catch (JsonProcessingException ex) { + } catch (JacksonException ex) { throw new RuntimeException(ex); } } - protected TestResult readValue(String json) throws JsonProcessingException { + protected TestResult readValue(String json) throws JacksonException { return objectMapper.readValue(json, TestResult.class); } diff --git a/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/TestJsonProcessingException.java b/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/TestJsonProcessingException.java index 8cd77165829f5..46d0e5c398d4a 100644 --- a/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/TestJsonProcessingException.java +++ b/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/TestJsonProcessingException.java @@ -16,9 +16,9 @@ */ package org.apache.camel.maven.htmlxlsx.process; -import tools.jackson.core.JsonProcessingException; +import tools.jackson.core.JacksonException; -public class TestJsonProcessingException extends JsonProcessingException { +public class TestJsonProcessingException extends JacksonException { private static final String DONTCARE = "dontcare"; diff --git a/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageTest.java b/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageTest.java index 3d345046970c0..f60f7259ee349 100644 --- a/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageTest.java +++ b/catalog/camel-report-maven-plugin/src/test/java/org/apache/camel/maven/htmlxlsx/process/XmlToCamelRouteCoverageTest.java @@ -21,10 +21,10 @@ import java.nio.file.Path; import java.nio.file.Paths; -import tools.jackson.core.JsonProcessingException; import org.apache.camel.maven.htmlxlsx.model.TestResult; import org.junit.jupiter.api.Test; import org.mockito.Mockito; +import tools.jackson.core.JacksonException; import static org.junit.jupiter.api.Assertions.assertAll; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -57,7 +57,7 @@ public void testConvert() throws IOException { } @Test - public void testConvertException() throws JsonProcessingException { + public void testConvertException() throws JacksonException { XmlToCamelRouteCoverageConverter spy = spy(new XmlToCamelRouteCoverageConverter()); diff --git a/components/camel-ai/camel-docling/pom.xml b/components/camel-ai/camel-docling/pom.xml index 4ec3509c66922..6e79691e72419 100644 --- a/components/camel-ai/camel-docling/pom.xml +++ b/components/camel-ai/camel-docling/pom.xml @@ -49,7 +49,7 @@ tools.jackson.core jackson-databind - ${jackson-version} + ${jackson3-version} diff --git a/components/camel-ai/camel-langchain4j-chat/pom.xml b/components/camel-ai/camel-langchain4j-chat/pom.xml index d67647f03ffc9..30893b3a0bd4b 100644 --- a/components/camel-ai/camel-langchain4j-chat/pom.xml +++ b/components/camel-ai/camel-langchain4j-chat/pom.xml @@ -60,7 +60,7 @@ tools.jackson.core jackson-databind - ${jackson-version} + ${jackson3-version} diff --git a/components/camel-ai/camel-langchain4j-tools/pom.xml b/components/camel-ai/camel-langchain4j-tools/pom.xml index f4b5ebceeb977..14f7964510dac 100644 --- a/components/camel-ai/camel-langchain4j-tools/pom.xml +++ b/components/camel-ai/camel-langchain4j-tools/pom.xml @@ -47,7 +47,7 @@ org.apache.camel - camel-jackson + camel-jackson3 tools.jackson.core @@ -116,4 +116,4 @@ - \ No newline at end of file + diff --git a/components/camel-ai/camel-neo4j/pom.xml b/components/camel-ai/camel-neo4j/pom.xml index 01b0283fa3420..e5f6932da1ae4 100644 --- a/components/camel-ai/camel-neo4j/pom.xml +++ b/components/camel-ai/camel-neo4j/pom.xml @@ -47,7 +47,7 @@ org.apache.camel - camel-jackson + camel-jackson3 tools.jackson.core diff --git a/components/camel-ai/camel-openai/pom.xml b/components/camel-ai/camel-openai/pom.xml index 1cf9e05d50c95..cd930e672d243 100644 --- a/components/camel-ai/camel-openai/pom.xml +++ b/components/camel-ai/camel-openai/pom.xml @@ -82,7 +82,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-ai/camel-qdrant/pom.xml b/components/camel-ai/camel-qdrant/pom.xml index 97c339043b6f0..551dc3a90bce5 100644 --- a/components/camel-ai/camel-qdrant/pom.xml +++ b/components/camel-ai/camel-qdrant/pom.xml @@ -106,7 +106,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-ai/pom.xml b/components/camel-ai/pom.xml index 224bc5427a2c5..dbb557577119e 100644 --- a/components/camel-ai/pom.xml +++ b/components/camel-ai/pom.xml @@ -55,7 +55,7 @@ camel-pinecone camel-qdrant camel-tensorflow-serving - camel-torchserve + camel-weaviate diff --git a/components/camel-aws/camel-aws-bedrock/pom.xml b/components/camel-aws/camel-aws-bedrock/pom.xml index 3f1853860f6b7..0c276f6f78b3a 100644 --- a/components/camel-aws/camel-aws-bedrock/pom.xml +++ b/components/camel-aws/camel-aws-bedrock/pom.xml @@ -46,7 +46,7 @@ org.apache.camel - camel-jackson + camel-jackson3 software.amazon.awssdk diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/BedrockStreamHandler.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/BedrockStreamHandler.java index ced61c4fd6304..fc1ad1fb17f89 100644 --- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/BedrockStreamHandler.java +++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/runtime/stream/BedrockStreamHandler.java @@ -19,6 +19,7 @@ import java.util.List; import java.util.function.Consumer; +import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import software.amazon.awssdk.services.bedrockruntime.model.InvokeModelWithResponseStreamResponseHandler; diff --git a/components/camel-aws/camel-aws2-ddb/pom.xml b/components/camel-aws/camel-aws2-ddb/pom.xml index c1bb71c4041b8..75b54ee4e00fa 100644 --- a/components/camel-aws/camel-aws2-ddb/pom.xml +++ b/components/camel-aws/camel-aws2-ddb/pom.xml @@ -88,7 +88,7 @@ org.apache.camel - camel-jackson + camel-jackson3 provided true diff --git a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java index 2d81a4fb4d346..7ac2b94d2f2ae 100644 --- a/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java +++ b/components/camel-aws/camel-aws2-ddb/src/main/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformer.java @@ -29,8 +29,8 @@ import org.apache.camel.Message; import org.apache.camel.component.aws2.ddb.Ddb2Constants; import org.apache.camel.component.aws2.ddb.Ddb2Operations; -import org.apache.camel.component.jackson.JacksonDataFormat; -import org.apache.camel.component.jackson.transform.Json; +import org.apache.camel.component.jackson3.JacksonDataFormat; +import org.apache.camel.component.jackson3.transform.Json; import org.apache.camel.spi.DataType; import org.apache.camel.spi.DataTypeTransformer; import org.apache.camel.spi.Transformer; diff --git a/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformerTest.java b/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformerTest.java index a401bfea23f89..cf4427989d274 100644 --- a/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformerTest.java +++ b/components/camel-aws/camel-aws2-ddb/src/test/java/org/apache/camel/component/aws2/ddb/transform/Ddb2JsonDataTypeTransformerTest.java @@ -23,7 +23,7 @@ import org.apache.camel.Exchange; import org.apache.camel.component.aws2.ddb.Ddb2Constants; import org.apache.camel.component.aws2.ddb.Ddb2Operations; -import org.apache.camel.component.jackson.transform.Json; +import org.apache.camel.component.jackson3.transform.Json; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.spi.DataType; import org.apache.camel.spi.Transformer; diff --git a/components/camel-cxf/camel-cxf-spring-rest/pom.xml b/components/camel-cxf/camel-cxf-spring-rest/pom.xml index 23c3de5192707..c41c85dc568a2 100644 --- a/components/camel-cxf/camel-cxf-spring-rest/pom.xml +++ b/components/camel-cxf/camel-cxf-spring-rest/pom.xml @@ -147,7 +147,7 @@ tools.jackson.jakarta.rs jackson-jakarta-rs-json-provider - ${jackson-version} + ${jackson3-version} test diff --git a/components/camel-dhis2/camel-dhis2-component/pom.xml b/components/camel-dhis2/camel-dhis2-component/pom.xml index f5c03c4f43e53..b0cfca041420c 100644 --- a/components/camel-dhis2/camel-dhis2-component/pom.xml +++ b/components/camel-dhis2/camel-dhis2-component/pom.xml @@ -46,7 +46,7 @@ org.apache.camel - camel-jackson + camel-jackson3 org.apache.camel diff --git a/components/camel-flowable/pom.xml b/components/camel-flowable/pom.xml index 0f86b526921d5..3daa86dd5b678 100644 --- a/components/camel-flowable/pom.xml +++ b/components/camel-flowable/pom.xml @@ -72,5 +72,11 @@ test ${h2-version} + + tools.jackson.core + jackson-databind + test + ${jackson3-version} + diff --git a/components/camel-google/camel-google-sheets/pom.xml b/components/camel-google/camel-google-sheets/pom.xml index e63b34e480869..45602250a43d8 100644 --- a/components/camel-google/camel-google-sheets/pom.xml +++ b/components/camel-google/camel-google-sheets/pom.xml @@ -142,7 +142,7 @@ org.apache.camel - camel-jackson + camel-jackson3 provided true diff --git a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java index 1d4ad094de959..66e0423888a9e 100644 --- a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java +++ b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/transform/GoogleSheetsJsonStructDataTypeTransformer.java @@ -31,7 +31,7 @@ import org.apache.camel.Message; import org.apache.camel.component.google.sheets.internal.GoogleSheetsConstants; import org.apache.camel.component.google.sheets.stream.GoogleSheetsStreamConstants; -import org.apache.camel.component.jackson.transform.Json; +import org.apache.camel.component.jackson3.transform.Json; import org.apache.camel.spi.DataType; import org.apache.camel.spi.DataTypeTransformer; import org.apache.camel.spi.Transformer; diff --git a/components/camel-google/camel-google-vertexai/pom.xml b/components/camel-google/camel-google-vertexai/pom.xml index 18d8a58b37fa2..43e7e7ce54830 100644 --- a/components/camel-google/camel-google-vertexai/pom.xml +++ b/components/camel-google/camel-google-vertexai/pom.xml @@ -51,7 +51,7 @@ org.apache.camel - camel-jackson + camel-jackson3 com.google.genai diff --git a/components/camel-groovy/src/main/java/org/apache/camel/groovy/xml/GroovyXmlDataFormat.java b/components/camel-groovy/src/main/java/org/apache/camel/groovy/xml/GroovyXmlDataFormat.java index 75e53de2bf1a3..4ab83d74e9550 100644 --- a/components/camel-groovy/src/main/java/org/apache/camel/groovy/xml/GroovyXmlDataFormat.java +++ b/components/camel-groovy/src/main/java/org/apache/camel/groovy/xml/GroovyXmlDataFormat.java @@ -64,8 +64,9 @@ public void marshal(Exchange exchange, Object graph, OutputStream stream) throws } else if (graph instanceof Map map) { serialize(exchange, map, stream); } else { - // optional jackson support (TODO: jackson3) - if (graph.getClass().getName().startsWith("com.fasterxml.jackson.databind")) { + // optional jackson support + if (graph.getClass().getName().startsWith("com.fasterxml.jackson.databind") + || graph.getClass().getName().startsWith("tools.jackson.databind")) { var map = exchange.getContext().getTypeConverter().convertTo(Map.class, exchange, graph); serialize(exchange, map, stream); } else { diff --git a/components/camel-iso8583/pom.xml b/components/camel-iso8583/pom.xml index 6b0d52d8adf6b..9af8d03bb7ce3 100644 --- a/components/camel-iso8583/pom.xml +++ b/components/camel-iso8583/pom.xml @@ -51,7 +51,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-jackson-avro/pom.xml b/components/camel-jackson-avro/pom.xml index 8c62a576ed55a..9de36f3236656 100644 --- a/components/camel-jackson-avro/pom.xml +++ b/components/camel-jackson-avro/pom.xml @@ -35,18 +35,6 @@ 3.10.0 - - - - com.fasterxml.jackson - jackson-bom - ${jackson2-version} - pom - import - - - - @@ -61,6 +49,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-avro + ${jackson2-version} org.apache.avro diff --git a/components/camel-jackson/pom.xml b/components/camel-jackson/pom.xml index 0cd7cc5f8c589..931aff9fb4c3b 100644 --- a/components/camel-jackson/pom.xml +++ b/components/camel-jackson/pom.xml @@ -35,18 +35,6 @@ - - - - com.fasterxml.jackson - jackson-bom - ${jackson2-version} - pom - import - - - - @@ -57,12 +45,14 @@ com.fasterxml.jackson.core jackson-databind + ${jackson2-version} com.fasterxml.jackson.module jackson-module-jakarta-xmlbind-annotations + ${jackson2-version} test diff --git a/components/camel-jacksonxml/pom.xml b/components/camel-jacksonxml/pom.xml index 0e2cadc8ad44a..82bb4d6fdc2fe 100644 --- a/components/camel-jacksonxml/pom.xml +++ b/components/camel-jacksonxml/pom.xml @@ -72,6 +72,12 @@ camel-test-spring-junit6 test + + org.skyscreamer + jsonassert + ${jsonassert-version} + test + org.junit.jupiter junit-jupiter diff --git a/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/TestPojoView.java b/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/TestPojoView.java index 45d70231d29e3..cd9c773ad1e0f 100644 --- a/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/TestPojoView.java +++ b/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/TestPojoView.java @@ -24,6 +24,7 @@ public class TestPojoView { @JsonView(Views.Age.class) private int age = 30; + @JsonView({ Views.Age.class, Views.Weight.class, Views.Height.class }) private int height = 190; @JsonView(Views.Weight.class) diff --git a/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/Views.java b/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/Views.java index 551eb51359810..c26e1795bd2ab 100644 --- a/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/Views.java +++ b/components/camel-jacksonxml/src/test/java/org/apache/camel/component/jacksonxml/Views.java @@ -22,6 +22,10 @@ public class Views { static class Age { } + static class Height { + + } + static class Weight { } } diff --git a/components/camel-jetty-common/pom.xml b/components/camel-jetty-common/pom.xml index 387d0b16dc461..78ed9a0b16202 100644 --- a/components/camel-jetty-common/pom.xml +++ b/components/camel-jetty-common/pom.xml @@ -114,7 +114,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-jetty/pom.xml b/components/camel-jetty/pom.xml index fb4d734fb1a09..1d0f0e7562e7a 100644 --- a/components/camel-jetty/pom.xml +++ b/components/camel-jetty/pom.xml @@ -139,12 +139,12 @@ org.apache.camel - camel-jackson + camel-jackson3 test org.apache.camel - camel-jacksonxml + camel-jackson3xml test @@ -194,6 +194,12 @@ ${commons-io-version} test + + org.skyscreamer + jsonassert + ${jsonassert-version} + test + diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyCustomContentTypeTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyCustomContentTypeTest.java index 1491042a8a193..787e2696bc34c 100644 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyCustomContentTypeTest.java +++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyCustomContentTypeTest.java @@ -21,7 +21,9 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jetty.BaseJettyTest; import org.apache.camel.model.rest.RestBindingMode; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -40,7 +42,7 @@ public void process(Exchange exchange) { } @Test - public void testJSon() { + public void testJSon() throws JSONException { Exchange out = template.request("http://localhost:" + getPort() + "/users/lives", new Processor() { @Override public void process(Exchange exchange) { @@ -48,7 +50,7 @@ public void process(Exchange exchange) { }); assertEquals("application/json", out.getMessage().getHeader(Exchange.CONTENT_TYPE)); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out.getMessage().getBody(String.class)); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out.getMessage().getBody(String.class), false); } @Override diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyNoContentRestConfigTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyNoContentRestConfigTest.java index bad2a6b73535f..05988b380cd3e 100644 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyNoContentRestConfigTest.java +++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyNoContentRestConfigTest.java @@ -23,7 +23,9 @@ import org.apache.camel.converter.jaxb.JaxbConstants; import org.apache.camel.model.rest.RestBindingMode; import org.apache.camel.support.MessageHelper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; @@ -100,7 +102,7 @@ public void process(Exchange exchange) { } @Test - public void testJson200ConfigNoContentEnabled() { + public void testJson200ConfigNoContentEnabled() throws JSONException { Exchange exchange = template.request("http://localhost:" + getPort() + "/country", new Processor() { @Override public void process(Exchange exchange) { @@ -109,7 +111,8 @@ public void process(Exchange exchange) { }); assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE)); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", MessageHelper.extractBodyAsString(exchange.getMessage())); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", + MessageHelper.extractBodyAsString(exchange.getMessage()), false); } @Test diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyNoContentTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyNoContentTest.java index 30acebbfc74a4..1465938a3ae38 100644 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyNoContentTest.java +++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyNoContentTest.java @@ -23,7 +23,9 @@ import org.apache.camel.converter.jaxb.JaxbConstants; import org.apache.camel.model.rest.RestBindingMode; import org.apache.camel.support.MessageHelper; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -100,7 +102,7 @@ public void process(Exchange exchange) { } @Test - public void testJson200ConfigNoContentEnabled() { + public void testJson200ConfigNoContentEnabled() throws JSONException { Exchange exchange = template.request("http://localhost:" + getPort() + "/country", new Processor() { @Override public void process(Exchange exchange) { @@ -109,7 +111,8 @@ public void process(Exchange exchange) { }); assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE)); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", MessageHelper.extractBodyAsString(exchange.getMessage())); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", + MessageHelper.extractBodyAsString(exchange.getMessage()), false); } @Test diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyPojoInOutTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyPojoInOutTest.java index 3c13d01d1a24c..7b84f0e454c91 100644 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyPojoInOutTest.java +++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/RestJettyPojoInOutTest.java @@ -19,7 +19,9 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.jetty.BaseJettyTest; import org.apache.camel.model.rest.RestBindingMode; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -27,20 +29,21 @@ public class RestJettyPojoInOutTest extends BaseJettyTest { @Test - public void testJettyPojoInOut() { + public void testJettyPojoInOut() throws JSONException { String body = "{\"id\": 123, \"name\": \"Donald Duck\"}"; String out = template.requestBody("http://localhost:" + getPort() + "/users/lives", body, String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); } @Test - public void testJettyGetRequest() { + public void testJettyGetRequest() throws JSONException { String out = template.requestBody("http://localhost:" + getPort() + "/users/lives", null, String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); } @Override diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerPojoInOutTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerPojoInOutTest.java index 25e8384eb69a4..9a30a334f6cd6 100644 --- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerPojoInOutTest.java +++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/rest/producer/JettyRestProducerPojoInOutTest.java @@ -23,7 +23,9 @@ import org.apache.camel.component.jetty.rest.UserPojo; import org.apache.camel.component.jetty.rest.UserService; import org.apache.camel.model.rest.RestBindingMode; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -31,27 +33,29 @@ public class JettyRestProducerPojoInOutTest extends BaseJettyTest { @Test - public void testJettyEmptyBody() { + public void testJettyEmptyBody() throws JSONException { String out = fluentTemplate.to("rest:get:users/lives").withHeader(Exchange.CONTENT_TYPE, "application/json") .request(String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); + //assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); } @Test - public void testJettyJSonBody() { + public void testJettyJSonBody() throws JSONException { String body = "{\"id\": 123, \"name\": \"Donald Duck\"}"; String out = fluentTemplate.to("rest:post:users/lives").withHeader(Exchange.CONTENT_TYPE, "application/json") .withBody(body).request(String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); + //assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); } @Test - public void testJettyPojoIn() { + public void testJettyPojoIn() throws JSONException { UserPojo user = new UserPojo(); user.setId(123); user.setName("Donald Duck"); @@ -60,7 +64,8 @@ public void testJettyPojoIn() { .withBody(user).request(String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); + //assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); } @Test diff --git a/components/camel-jms/pom.xml b/components/camel-jms/pom.xml index 79f0e74e9b6ba..f88108f78a794 100644 --- a/components/camel-jms/pom.xml +++ b/components/camel-jms/pom.xml @@ -46,6 +46,18 @@ -XX:+ExitOnOutOfMemoryError -Xmx3G + + + + org.junit + junit-bom + ${junit-jupiter-version} + import + pom + + + + org.apache.camel diff --git a/components/camel-jq/pom.xml b/components/camel-jq/pom.xml index d2641b5c7a9dd..1bcbd6a1070fc 100644 --- a/components/camel-jq/pom.xml +++ b/components/camel-jq/pom.xml @@ -41,12 +41,11 @@ org.apache.camel camel-support - + net.thisptr jackson-jq diff --git a/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqFunctions.java b/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqFunctions.java index 63d872ee1566b..6960b4f5fe5d9 100644 --- a/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqFunctions.java +++ b/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqFunctions.java @@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory; import tools.jackson.databind.JsonNode; import tools.jackson.databind.node.NullNode; -import tools.jackson.databind.node.TextNode; +import tools.jackson.databind.node.StringNode; public final class JqFunctions { @@ -172,7 +172,7 @@ private void extract(Exchange exchange, String headerName, String headerValue, P if (header == null) { output.emit(NullNode.getInstance(), null); } else { - output.emit(new TextNode(header), null); + output.emit(new StringNode(header), null); } } } @@ -231,7 +231,7 @@ private void extract(Exchange exchange, String propertyName, String propertyValu if (header == null) { output.emit(NullNode.getInstance(), null); } else { - output.emit(new TextNode(header), null); + output.emit(new StringNode(header), null); } } } @@ -256,7 +256,7 @@ public void apply(Scope scope, List args, JsonNode in, Path path, Pa throws JsonQueryException { FunctionCall fc = (FunctionCall) args.get(0); String t = fc.toString(); - output.emit(new TextNode(t), null); + output.emit(new StringNode(t), null); } } @@ -314,7 +314,7 @@ private void extract(Exchange exchange, String variableName, String variableValu if (variable == null) { output.emit(NullNode.getInstance(), null); } else { - output.emit(new TextNode(variable), null); + output.emit(new StringNode(variable), null); } } } @@ -345,7 +345,7 @@ public void apply(Scope scope, List args, JsonNode in, Path path, Pa sc.reset(); } String t = exchange.getMessage().getBody(String.class); - output.emit(new TextNode(t), null); + output.emit(new StringNode(t), null); } } } diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/JqLanguageTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/JqLanguageTest.java index b492dc457163d..3e90f9721b4b2 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/JqLanguageTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/JqLanguageTest.java @@ -18,11 +18,11 @@ import org.apache.camel.CamelContext; import org.apache.camel.builder.LanguageBuilderFactory; -import org.apache.camel.component.jackson.JacksonConstants; +import org.apache.camel.component.jackson3.JacksonConstants; import org.apache.camel.model.language.JqExpression; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.node.ObjectNode; -import tools.jackson.databind.node.TextNode; +import tools.jackson.databind.node.StringNode; /** * Ensures that the "jq" language is compliant with the single input / typed language expectations. @@ -52,6 +52,6 @@ protected Object defaultContentToSend() { @Override protected TestContext testWithoutTypeContext() { - return new TestContext(defaultContentToSend(), new TextNode("1"), TextNode.class); + return new TestContext(defaultContentToSend(), new StringNode("1"), StringNode.class); } } diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java index 4e8fd195a3d75..8172eaa42e4ee 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromHeaderTest.java @@ -20,7 +20,7 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; -import tools.jackson.databind.node.TextNode; +import tools.jackson.databind.node.StringNode; public class JqExpressionFromHeaderTest extends JqTestSupport { @Override @@ -44,7 +44,7 @@ public void configure() { @Test public void testExpressionFromHeader() throws Exception { getMockEndpoint("mock:result") - .expectedBodiesReceived(new TextNode("bar")); + .expectedBodiesReceived(new StringNode("bar")); getMockEndpoint("mock:fail") .expectedMessageCount(0); diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java index d1fa0b90891ce..30c62df652c6e 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionFromPropertyTest.java @@ -21,7 +21,7 @@ import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; import tools.jackson.databind.node.ObjectNode; -import tools.jackson.databind.node.TextNode; +import tools.jackson.databind.node.StringNode; public class JqExpressionFromPropertyTest extends JqTestSupport { @Override @@ -45,7 +45,7 @@ public void configure() { @Test public void testExpressionFromProperty() throws Exception { getMockEndpoint("mock:result") - .expectedBodiesReceived(new TextNode("bar")); + .expectedBodiesReceived(new StringNode("bar")); getMockEndpoint("mock:fail") .expectedMessageCount(0); diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionPojoTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionPojoTest.java index a8b0422e1fd2e..877b5b2efa9a0 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionPojoTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionPojoTest.java @@ -20,7 +20,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.jackson.JacksonConstants; +import org.apache.camel.component.jackson3.JacksonConstants; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; import tools.jackson.databind.node.ObjectNode; @@ -53,7 +53,7 @@ public void testExpression() throws Exception { getMockEndpoint("mock:result").expectedBodiesReceived(new Book("foo", "bar")); ObjectNode node = MAPPER.createObjectNode(); - node.with("book").put("author", "foo").put("title", "bar"); + node.withObject("book").put("author", "foo").put("title", "bar"); template.sendBody("direct:start", node); diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionSimpleTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionSimpleTest.java index 33ea5aa2134ca..d6d20e067b726 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionSimpleTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionSimpleTest.java @@ -19,7 +19,7 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; -import tools.jackson.databind.node.TextNode; +import tools.jackson.databind.node.StringNode; public class JqExpressionSimpleTest extends JqTestSupport { @Override @@ -36,7 +36,7 @@ public void configure() { @Test public void testExpression() throws Exception { - getMockEndpoint("mock:result").expectedBodiesReceived(new TextNode("bar")); + getMockEndpoint("mock:result").expectedBodiesReceived(new StringNode("bar")); template.sendBody("direct:start", node("foo", "bar", "baz", "bak")); diff --git a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionTest.java b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionTest.java index 994dac02227f7..d7d7e2accddc4 100644 --- a/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionTest.java +++ b/components/camel-jq/src/test/java/org/apache/camel/language/jq/JqExpressionTest.java @@ -133,13 +133,14 @@ public void selectArray() throws Exception { try (CamelContext context = new DefaultCamelContext()) { ArrayNode node = MAPPER.createArrayNode(); - var n1 = MAPPER.createObjectNode().with("commit"); - n1.with("commit").put("name", "Stephen Dolan"); - n1.with("commit").put("message", "Merge pull request #163 from stedolan/utf8-fixes\n\nUtf8 fixes. Closes #161"); + ObjectNode n1 = MAPPER.createObjectNode().withObject("commit"); + n1.withObject("commit").put("name", "Stephen Dolan"); + n1.withObject("commit").put("message", + "Merge pull request #163 from stedolan/utf8-fixes\n\nUtf8 fixes. Closes #161"); - var n2 = MAPPER.createObjectNode(); - n2.with("commit").put("name", "Nicolas Williams"); - n2.with("commit").put("message", "Reject all overlong UTF8 sequences."); + ObjectNode n2 = MAPPER.createObjectNode(); + n2.withObject("commit").put("name", "Nicolas Williams"); + n2.withObject("commit").put("message", "Reject all overlong UTF8 sequences."); node.add(n1); node.add(n2); @@ -161,8 +162,8 @@ public void selectArray() throws Exception { public void setField() throws Exception { try (CamelContext context = new DefaultCamelContext()) { ObjectNode node = MAPPER.createObjectNode(); - node.with("commit").put("name", "Nicolas Williams"); - node.with("commit").put("message", "Reject all overlong UTF8 sequences."); + node.withObject("commit").put("name", "Nicolas Williams"); + node.withObject("commit").put("message", "Reject all overlong UTF8 sequences."); Exchange exchange = new DefaultExchange(context); exchange.getMessage().setBody(node); @@ -183,8 +184,8 @@ public void setField() throws Exception { public void setFieldFromHeader() throws Exception { try (CamelContext context = new DefaultCamelContext()) { ObjectNode node = MAPPER.createObjectNode(); - node.with("commit").put("name", "Nicolas Williams"); - node.with("commit").put("message", "Reject all overlong UTF8 sequences."); + node.withObject("commit").put("name", "Nicolas Williams"); + node.withObject("commit").put("message", "Reject all overlong UTF8 sequences."); Exchange exchange = new DefaultExchange(context); exchange.getMessage().setHeader("CommitterName", "Andrea"); @@ -206,8 +207,8 @@ public void setFieldFromHeader() throws Exception { public void setFieldFromProperty() throws Exception { try (CamelContext context = new DefaultCamelContext()) { ObjectNode node = MAPPER.createObjectNode(); - node.with("commit").put("name", "Nicolas Williams"); - node.with("commit").put("message", "Reject all overlong UTF8 sequences."); + node.withObject("commit").put("name", "Nicolas Williams"); + node.withObject("commit").put("message", "Reject all overlong UTF8 sequences."); Exchange exchange = new DefaultExchange(context); exchange.setProperty("CommitterName", "Andrea"); @@ -229,8 +230,8 @@ public void setFieldFromProperty() throws Exception { public void removeField() throws Exception { try (CamelContext context = new DefaultCamelContext()) { ObjectNode node = MAPPER.createObjectNode(); - node.with("commit").put("name", "Nicolas Williams"); - node.with("commit").put("message", "Reject all overlong UTF8 sequences."); + node.withObject("commit").put("name", "Nicolas Williams"); + node.withObject("commit").put("message", "Reject all overlong UTF8 sequences."); Exchange exchange = new DefaultExchange(context); exchange.getMessage().setBody(node); diff --git a/components/camel-jslt/pom.xml b/components/camel-jslt/pom.xml index f500cb3190951..2b67af0b0fa96 100644 --- a/components/camel-jslt/pom.xml +++ b/components/camel-jslt/pom.xml @@ -47,8 +47,9 @@ ${jslt-version} - tools.jackson.core + com.fasterxml.jackson.core jackson-databind + ${jackson2-version} diff --git a/components/camel-jslt/src/generated/java/org/apache/camel/component/jslt/JsltEndpointConfigurer.java b/components/camel-jslt/src/generated/java/org/apache/camel/component/jslt/JsltEndpointConfigurer.java index 03f2e7af3088d..35534de963d0c 100644 --- a/components/camel-jslt/src/generated/java/org/apache/camel/component/jslt/JsltEndpointConfigurer.java +++ b/components/camel-jslt/src/generated/java/org/apache/camel/component/jslt/JsltEndpointConfigurer.java @@ -34,7 +34,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "mapbigdecimalasfloats": case "mapBigDecimalAsFloats": target.setMapBigDecimalAsFloats(property(camelContext, boolean.class, value)); return true; case "objectmapper": - case "objectMapper": target.setObjectMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; + case "objectMapper": target.setObjectMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; case "prettyprint": case "prettyPrint": target.setPrettyPrint(property(camelContext, boolean.class, value)); return true; default: return false; @@ -55,7 +55,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "mapbigdecimalasfloats": case "mapBigDecimalAsFloats": return boolean.class; case "objectmapper": - case "objectMapper": return tools.jackson.databind.ObjectMapper.class; + case "objectMapper": return com.fasterxml.jackson.databind.ObjectMapper.class; case "prettyprint": case "prettyPrint": return boolean.class; default: return null; diff --git a/components/camel-jslt/src/generated/resources/META-INF/org/apache/camel/component/jslt/jslt.json b/components/camel-jslt/src/generated/resources/META-INF/org/apache/camel/component/jslt/jslt.json index 180601a80f1a9..c198558434599 100644 --- a/components/camel-jslt/src/generated/resources/META-INF/org/apache/camel/component/jslt/jslt.json +++ b/components/camel-jslt/src/generated/resources/META-INF/org/apache/camel/component/jslt/jslt.json @@ -41,7 +41,7 @@ "allowTemplateFromHeader": { "index": 2, "kind": "parameter", "displayName": "Allow Template From Header", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to allow to use resource template from header or not (default false). Enabling this allows to specify dynamic templates via message header. However this can be seen as a potential security vulnerability if the header is coming from a malicious user, so use this with care." }, "contentCache": { "index": 3, "kind": "parameter", "displayName": "Content Cache", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Sets whether to use resource content cache or not" }, "mapBigDecimalAsFloats": { "index": 4, "kind": "parameter", "displayName": "Map Big Decimal As Floats", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If true, the mapper will use the USE_BIG_DECIMAL_FOR_FLOATS in serialization features" }, - "objectMapper": { "index": 5, "kind": "parameter", "displayName": "Object Mapper", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "description": "Setting a custom JSON Object Mapper to be used" }, + "objectMapper": { "index": 5, "kind": "parameter", "displayName": "Object Mapper", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "description": "Setting a custom JSON Object Mapper to be used" }, "prettyPrint": { "index": 6, "kind": "parameter", "displayName": "Pretty Print", "group": "common", "label": "common", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If true, JSON in output message is pretty printed." }, "lazyStartProducer": { "index": 7, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing." } } diff --git a/components/camel-jslt/src/main/java/org/apache/camel/component/jslt/JsltEndpoint.java b/components/camel-jslt/src/main/java/org/apache/camel/component/jslt/JsltEndpoint.java index 79d0b594b3038..3ca8c381dcc5b 100644 --- a/components/camel-jslt/src/main/java/org/apache/camel/component/jslt/JsltEndpoint.java +++ b/components/camel-jslt/src/main/java/org/apache/camel/component/jslt/JsltEndpoint.java @@ -21,6 +21,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.io.Serializable; import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Collections; @@ -28,6 +29,15 @@ import java.util.Map; import java.util.Objects; +import com.fasterxml.jackson.databind.BeanDescription; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationConfig; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.schibsted.spt.data.jslt.Expression; import com.schibsted.spt.data.jslt.Function; import com.schibsted.spt.data.jslt.JsltException; @@ -47,11 +57,6 @@ import org.apache.camel.support.ResourceHelper; import org.apache.camel.util.IOHelper; import org.apache.camel.util.ObjectHelper; -import tools.jackson.databind.DeserializationFeature; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.json.JsonMapper; -import tools.jackson.databind.node.ObjectNode; /** * Query or transform JSON payloads using JSLT. @@ -64,7 +69,9 @@ public class JsltEndpoint extends ResourceEndpoint { private static final JsonFilter DEFAULT_JSON_FILTER = new DefaultJsonFilter(); static { - OBJECT_MAPPER = JsonMapper.builder().addModule(new JsltJacksonModule()).build(); + OBJECT_MAPPER = new ObjectMapper(); + OBJECT_MAPPER.setSerializerFactory(OBJECT_MAPPER.getSerializerFactory().withSerializerModifier( + new SafeTypesOnlySerializerModifier())); } private Expression transform; @@ -204,7 +211,7 @@ protected void onExchange(Exchange exchange) throws Exception { objectMapper = getObjectMapper(); } if (isMapBigDecimalAsFloats()) { - objectMapper = objectMapper.rebuild().enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS).build(); + objectMapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); } Object body = exchange.getIn().getBody(); @@ -318,4 +325,31 @@ public void setObjectMapper(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } + private static class SafeTypesOnlySerializerModifier extends BeanSerializerModifier { + // Serialize only safe types: primitives, records, serializable objects and + // collections/maps/arrays of them. To avoid serializing something like Response object. + // Types that are not safe are serialized as their toString() value. + @Override + public JsonSerializer modifySerializer( + SerializationConfig config, BeanDescription beanDesc, + JsonSerializer serializer) { + final Class beanClass = beanDesc.getBeanClass(); + + if (Collection.class.isAssignableFrom(beanClass) + || Map.class.isAssignableFrom(beanClass) + || beanClass.isArray() + || beanClass.isPrimitive() + || isRecord(beanClass) + || Serializable.class.isAssignableFrom(beanClass)) { + return serializer; + } + + return ToStringSerializer.instance; + } + + private static boolean isRecord(Class clazz) { + // This is available since Java 16. + return clazz.isRecord(); + } + } } diff --git a/components/camel-jslt/src/test/java/org/apache/camel/component/jslt/JsltBigDecimalCustomObjectMapperTest.java b/components/camel-jslt/src/test/java/org/apache/camel/component/jslt/JsltBigDecimalCustomObjectMapperTest.java index a8203a54a3cd3..5e86f59893d87 100644 --- a/components/camel-jslt/src/test/java/org/apache/camel/component/jslt/JsltBigDecimalCustomObjectMapperTest.java +++ b/components/camel-jslt/src/test/java/org/apache/camel/component/jslt/JsltBigDecimalCustomObjectMapperTest.java @@ -16,6 +16,8 @@ */ package org.apache.camel.component.jslt; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; import com.schibsted.spt.data.jslt.Expression; import com.schibsted.spt.data.jslt.Parser; import com.schibsted.spt.data.jslt.filters.JsltJsonFilter; @@ -28,14 +30,11 @@ import org.apache.camel.test.junit6.CamelTestSupport; import org.apache.camel.util.IOHelper; import org.junit.jupiter.api.Test; -import tools.jackson.databind.DeserializationFeature; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.json.JsonMapper; public class JsltBigDecimalCustomObjectMapperTest extends CamelTestSupport { @BindToRegistry("customMapper") - ObjectMapper mapper = JsonMapper.builder().enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS).build(); + ObjectMapper mapper = new ObjectMapper().enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); @Override protected CamelContext createCamelContext() throws Exception { diff --git a/components/camel-json-patch/src/main/java/org/apache/camel/component/jsonpatch/JsonPatchProducer.java b/components/camel-json-patch/src/main/java/org/apache/camel/component/jsonpatch/JsonPatchProducer.java index 3526cb60796e4..618d854341737 100644 --- a/components/camel-json-patch/src/main/java/org/apache/camel/component/jsonpatch/JsonPatchProducer.java +++ b/components/camel-json-patch/src/main/java/org/apache/camel/component/jsonpatch/JsonPatchProducer.java @@ -16,8 +16,8 @@ */ package org.apache.camel.component.jsonpatch; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.github.fge.jsonpatch.JsonPatch; import org.apache.camel.Exchange; import org.apache.camel.support.DefaultProducer; diff --git a/components/camel-json-validator/pom.xml b/components/camel-json-validator/pom.xml index f2f757092b7fd..f9a658e6f6dd9 100644 --- a/components/camel-json-validator/pom.xml +++ b/components/camel-json-validator/pom.xml @@ -46,6 +46,12 @@ ${networknt-json-schema-validator-version} + + tools.jackson.core + jackson-databind + ${jackson3-version} + + org.junit.jupiter diff --git a/components/camel-json-validator/src/generated/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpointConfigurer.java b/components/camel-json-validator/src/generated/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpointConfigurer.java index 0938d5ffd8367..f7670f5ef7b48 100644 --- a/components/camel-json-validator/src/generated/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpointConfigurer.java +++ b/components/camel-json-validator/src/generated/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpointConfigurer.java @@ -42,7 +42,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "lazystartproducer": case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; case "objectmapper": - case "objectMapper": target.setObjectMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; + case "objectMapper": target.setObjectMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; case "urischemaloader": case "uriSchemaLoader": target.setUriSchemaLoader(property(camelContext, org.apache.camel.component.jsonvalidator.JsonUriSchemaLoader.class, value)); return true; default: return false; @@ -71,7 +71,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "lazystartproducer": case "lazyStartProducer": return boolean.class; case "objectmapper": - case "objectMapper": return com.fasterxml.jackson.databind.ObjectMapper.class; + case "objectMapper": return tools.jackson.databind.ObjectMapper.class; case "urischemaloader": case "uriSchemaLoader": return org.apache.camel.component.jsonvalidator.JsonUriSchemaLoader.class; default: return null; diff --git a/components/camel-json-validator/src/generated/resources/META-INF/org/apache/camel/component/jsonvalidator/json-validator.json b/components/camel-json-validator/src/generated/resources/META-INF/org/apache/camel/component/jsonvalidator/json-validator.json index 8b4146fe30cad..b4c0f3d3c0407 100644 --- a/components/camel-json-validator/src/generated/resources/META-INF/org/apache/camel/component/jsonvalidator/json-validator.json +++ b/components/camel-json-validator/src/generated/resources/META-INF/org/apache/camel/component/jsonvalidator/json-validator.json @@ -41,7 +41,7 @@ "disabledDeserializationFeatures": { "index": 7, "kind": "parameter", "displayName": "Disabled Deserialization Features", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Comma-separated list of Jackson DeserializationFeature enum values which will be disabled for parsing exchange body" }, "enabledDeserializationFeatures": { "index": 8, "kind": "parameter", "displayName": "Enabled Deserialization Features", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Comma-separated list of Jackson DeserializationFeature enum values which will be enabled for parsing exchange body" }, "errorHandler": { "index": 9, "kind": "parameter", "displayName": "Error Handler", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jsonvalidator.JsonValidatorErrorHandler", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom ValidatorErrorHandler. The default error handler captures the errors and throws an exception." }, - "objectMapper": { "index": 10, "kind": "parameter", "displayName": "Object Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "description": "The used Jackson object mapper" }, + "objectMapper": { "index": 10, "kind": "parameter", "displayName": "Object Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "description": "The used Jackson object mapper" }, "uriSchemaLoader": { "index": 11, "kind": "parameter", "displayName": "Uri Schema Loader", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.jsonvalidator.JsonUriSchemaLoader", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom schema loader allowing for adding custom format validation. The default implementation will create a schema loader that tries to determine the schema version from the $schema property of the specified schema." } } } diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonUriSchemaLoader.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonUriSchemaLoader.java index 9f2f8ae2c81c0..61e0e1777caad 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonUriSchemaLoader.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonUriSchemaLoader.java @@ -19,39 +19,41 @@ import java.io.*; import java.net.*; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.JsonSchemaException; -import com.networknt.schema.JsonSchemaFactory; -import com.networknt.schema.SchemaValidatorsConfig; -import com.networknt.schema.SpecVersion; -import com.networknt.schema.SpecVersionDetector; +import com.networknt.schema.Schema; +import com.networknt.schema.SchemaLocation; +import com.networknt.schema.SchemaRegistry; +import com.networknt.schema.SchemaRegistryConfig; +import com.networknt.schema.SpecificationVersion; import org.apache.camel.CamelContext; import org.apache.camel.support.ResourceHelper; import tools.jackson.databind.JsonNode; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class DefaultJsonUriSchemaLoader implements JsonUriSchemaLoader { - protected ObjectMapper mapper = new ObjectMapper(); + protected ObjectMapper mapper = JsonMapper.builder().build(); - protected SchemaValidatorsConfig config = new SchemaValidatorsConfig(); + protected SchemaRegistryConfig config = SchemaRegistryConfig.builder().build(); - protected SpecVersion.VersionFlag defaultVersion = SpecVersion.VersionFlag.V201909; + protected SpecificationVersion defaultVersion = SpecificationVersion.DRAFT_2019_09; @Override - public JsonSchema createSchema(CamelContext camelContext, String schemaUri) throws Exception { + public Schema createSchema(CamelContext camelContext, String schemaUri) throws Exception { // determine schema version InputStream stream = ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, schemaUri); JsonNode node = mapper.readTree(stream); - SpecVersion.VersionFlag version; - try { - version = SpecVersionDetector.detect(node); - } catch (JsonSchemaException e) { - // default if no schema version was specified - version = defaultVersion; + + // Detect version from $schema field if present + SpecificationVersion version = defaultVersion; + if (node.has("$schema")) { + String dialectId = node.get("$schema").asText(); + version = SpecificationVersion.fromDialectId(dialectId).orElse(defaultVersion); } - JsonSchemaFactory factory = JsonSchemaFactory.getInstance(version); + // Create schema registry with detected version + SchemaRegistry registry = SchemaRegistry.withDefaultDialect(version, builder -> builder + .schemaRegistryConfig(config)); // the URI based method will correctly resolve relative schema references to other schema in the same directory URI uri; @@ -60,7 +62,9 @@ public JsonSchema createSchema(CamelContext camelContext, String schemaUri) thro } else { uri = URI.create("classpath:" + schemaUri); } - return factory.getSchema(uri, node, config); + + SchemaLocation location = SchemaLocation.of(uri.toString()); + return registry.getSchema(location, node); } } diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonValidationErrorHandler.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonValidationErrorHandler.java index 51d977a0bfe68..f96da6307b7bc 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonValidationErrorHandler.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/DefaultJsonValidationErrorHandler.java @@ -18,20 +18,20 @@ import java.util.Set; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; +import com.networknt.schema.Schema; import org.apache.camel.Exchange; import org.apache.camel.ValidationException; public class DefaultJsonValidationErrorHandler implements JsonValidatorErrorHandler { @Override - public void handleErrors(Exchange exchange, JsonSchema schema, Set errors) throws ValidationException { + public void handleErrors(Exchange exchange, Schema schema, Set errors) throws ValidationException { throw new JsonValidationException(exchange, schema, errors); } @Override - public void handleErrors(Exchange exchange, JsonSchema schema, Exception e) throws ValidationException { + public void handleErrors(Exchange exchange, Schema schema, Exception e) throws ValidationException { throw new JsonValidationException(exchange, schema, e); } diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonUriSchemaLoader.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonUriSchemaLoader.java index 3aeab7e028aa8..62db61e970f9d 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonUriSchemaLoader.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonUriSchemaLoader.java @@ -16,7 +16,7 @@ */ package org.apache.camel.component.jsonvalidator; -import com.networknt.schema.JsonSchema; +import com.networknt.schema.Schema; import org.apache.camel.CamelContext; /** @@ -31,6 +31,6 @@ public interface JsonUriSchemaLoader { * @param schemaUri the schema URI * @return a Schema to be used when validating incoming requests */ - JsonSchema createSchema(CamelContext camelContext, String schemaUri) throws Exception; + Schema createSchema(CamelContext camelContext, String schemaUri) throws Exception; } diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidationException.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidationException.java index 78a77268dc9fe..c83f1ee02fbdb 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidationException.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidationException.java @@ -21,8 +21,8 @@ import java.util.Set; import java.util.stream.Collectors; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; +import com.networknt.schema.Schema; import org.apache.camel.Exchange; import org.apache.camel.ValidationException; @@ -31,26 +31,26 @@ public class JsonValidationException extends ValidationException { @Serial private static final long serialVersionUID = 1L; - private final JsonSchema schema; - private final Set errors; + private final Schema schema; + private final Set errors; - public JsonValidationException(Exchange exchange, JsonSchema schema, Set errors) { + public JsonValidationException(Exchange exchange, Schema schema, Set errors) { super(exchange, "JSON validation error with " + errors.size() + " errors:\n" + toString(errors)); this.schema = schema; this.errors = errors; } - public JsonValidationException(Exchange exchange, JsonSchema schema, Exception e) { + public JsonValidationException(Exchange exchange, Schema schema, Exception e) { super(e.getMessage(), exchange, e); this.schema = schema; this.errors = Collections.emptySet(); } - public JsonSchema getSchema() { + public Schema getSchema() { return schema; } - public Set getErrors() { + public Set getErrors() { return errors; } @@ -58,7 +58,7 @@ public int getNumberOfErrors() { return errors.size(); } - private static String toString(Set errors) { - return errors.stream().map(ValidationMessage::toString).collect(Collectors.joining("\n")); + private static String toString(Set errors) { + return errors.stream().map(Error::toString).collect(Collectors.joining("\n")); } } diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpoint.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpoint.java index 8adadc801306d..e3faf749ea782 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpoint.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorEndpoint.java @@ -17,10 +17,12 @@ package org.apache.camel.component.jsonvalidator; import java.io.InputStream; +import java.util.LinkedHashSet; +import java.util.List; import java.util.Set; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; +import com.networknt.schema.Schema; import org.apache.camel.Category; import org.apache.camel.Component; import org.apache.camel.Exchange; @@ -34,6 +36,8 @@ import tools.jackson.databind.DeserializationFeature; import tools.jackson.databind.JsonNode; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.cfg.MapperBuilder; +import tools.jackson.databind.json.JsonMapper; /** * Validate JSON payloads using NetworkNT JSON Schema. @@ -44,7 +48,7 @@ remote = false, producerOnly = true, category = { Category.VALIDATION }) public class JsonValidatorEndpoint extends ResourceEndpoint { - private volatile JsonSchema schema; + private volatile Schema schema; @UriParam(defaultValue = "true") private boolean failOnNullBody = true; @@ -84,19 +88,28 @@ public void clearContentCache() { protected void doInit() throws Exception { super.doInit(); if (objectMapper == null) { - objectMapper = new ObjectMapper(); + objectMapper = JsonMapper.builder().build(); } - if (enabledDeserializationFeatures != null) { - for (var featureName : enabledDeserializationFeatures.split(",")) { - var feature = DeserializationFeature.valueOf(featureName); - objectMapper.enable(feature); + + // Configure deserialization features if specified + if (enabledDeserializationFeatures != null || disabledDeserializationFeatures != null) { + @SuppressWarnings("unchecked") + MapperBuilder builder = objectMapper.rebuild(); + + if (enabledDeserializationFeatures != null) { + for (var featureName : enabledDeserializationFeatures.split(",")) { + var feature = DeserializationFeature.valueOf(featureName); + builder.enable(feature); + } } - } - if (disabledDeserializationFeatures != null) { - for (var featureName : disabledDeserializationFeatures.split(",")) { - var feature = DeserializationFeature.valueOf(featureName); - objectMapper.disable(feature); + if (disabledDeserializationFeatures != null) { + for (var featureName : disabledDeserializationFeatures.split(",")) { + var feature = DeserializationFeature.valueOf(featureName); + builder.disable(feature); + } } + + objectMapper = (ObjectMapper) builder.build(); } } @@ -123,7 +136,7 @@ protected void onExchange(Exchange exchange) throws Exception { } // Get a local copy of the current schema to improve concurrency. - JsonSchema localSchema = this.schema; + Schema localSchema = this.schema; if (localSchema == null) { localSchema = getOrCreateSchema(); } @@ -148,7 +161,8 @@ protected void onExchange(Exchange exchange) throws Exception { if (node == null) { throw new NoJsonBodyValidationException(exchange); } - Set errors = localSchema.validate(node); + List errorList = localSchema.validate(node); + Set errors = new LinkedHashSet<>(errorList); if (!errors.isEmpty()) { this.log.debug("Validated JSON has {} errors", errors.size()); @@ -187,7 +201,7 @@ private boolean shouldUseHeader() { * * @return The currently loaded schema */ - private JsonSchema getOrCreateSchema() throws Exception { + private Schema getOrCreateSchema() throws Exception { getInternalLock().lock(); try { if (this.schema == null) { diff --git a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorErrorHandler.java b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorErrorHandler.java index d391c143aa535..dba59f966848c 100644 --- a/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorErrorHandler.java +++ b/components/camel-json-validator/src/main/java/org/apache/camel/component/jsonvalidator/JsonValidatorErrorHandler.java @@ -18,8 +18,8 @@ import java.util.Set; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; +import com.networknt.schema.Schema; import org.apache.camel.Exchange; import org.apache.camel.ValidationException; @@ -33,7 +33,7 @@ public interface JsonValidatorErrorHandler { * @param errors the validation errors * @throws ValidationException is thrown in case of validation errors */ - void handleErrors(Exchange exchange, JsonSchema schema, Set errors) throws ValidationException; + void handleErrors(Exchange exchange, Schema schema, Set errors) throws ValidationException; /** * Process a general error that happens during valdating @@ -43,6 +43,6 @@ public interface JsonValidatorErrorHandler { * @param e general error * @throws ValidationException is thrown in case of validation errors */ - void handleErrors(Exchange exchange, JsonSchema schema, Exception e) throws ValidationException; + void handleErrors(Exchange exchange, Schema schema, Exception e) throws ValidationException; } diff --git a/components/camel-json-validator/src/test/java/org/apache/camel/component/jsonvalidator/JsonValidationExceptionTest.java b/components/camel-json-validator/src/test/java/org/apache/camel/component/jsonvalidator/JsonValidationExceptionTest.java index a4020631bd828..e591b2b40a4a6 100644 --- a/components/camel-json-validator/src/test/java/org/apache/camel/component/jsonvalidator/JsonValidationExceptionTest.java +++ b/components/camel-json-validator/src/test/java/org/apache/camel/component/jsonvalidator/JsonValidationExceptionTest.java @@ -20,7 +20,7 @@ import java.util.LinkedHashSet; import java.util.Set; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -30,13 +30,13 @@ public class JsonValidationExceptionTest { @Test void testErrorsInfoInMessage() { - Set errors = new LinkedHashSet<>(); + Set errors = new LinkedHashSet<>(); errors.add(createError("name: is missing but it is required")); errors.add(createError("id: string found, integer expected")); final JsonValidationException jsonValidationException = new JsonValidationException(null, null, errors); assertEquals( - "JSON validation error with 2 errors:\nname: is missing but it is required\nid: string found, integer expected", + "JSON validation error with 2 errors:\n: name: is missing but it is required\n: id: string found, integer expected", jsonValidationException.getMessage()); } @@ -45,8 +45,8 @@ void testErrorsEmpty() { assertEquals(0, new JsonValidationException(null, null, new Exception()).getNumberOfErrors()); } - private ValidationMessage createError(String msg) { - return new ValidationMessage.Builder() + private Error createError(String msg) { + return new Error.Builder() .messageKey(String.valueOf(errorId++)) .format(new MessageFormat(msg)).build(); } diff --git a/components/camel-jsonpath/pom.xml b/components/camel-jsonpath/pom.xml index a904ccf8de2c4..b3a8667e1555d 100644 --- a/components/camel-jsonpath/pom.xml +++ b/components/camel-jsonpath/pom.xml @@ -74,7 +74,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java index e566bc6746bc5..ef901ad9e00b2 100644 --- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java +++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathEngine.java @@ -30,8 +30,8 @@ import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Option; -import com.jayway.jsonpath.spi.json.JacksonJsonProvider; -import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider; +import com.jayway.jsonpath.spi.json.Jackson3JsonProvider; +import com.jayway.jsonpath.spi.mapper.Jackson3MappingProvider; import org.apache.camel.CamelContext; import org.apache.camel.CamelExchangeException; import org.apache.camel.Exchange; @@ -80,11 +80,11 @@ public JsonPathEngine(String expression, Expression source, boolean writeAsStrin // Use custom ObjectMapper if provided (CAMEL-17956) ObjectMapper objectMapper = findRegisteredMapper(context); if (objectMapper != null) { - builder.jsonProvider(new JacksonJsonProvider(objectMapper)); - builder.mappingProvider(new JacksonMappingProvider(objectMapper)); + builder.jsonProvider(new Jackson3JsonProvider(objectMapper)); + builder.mappingProvider(new Jackson3MappingProvider(objectMapper)); } else { - builder.jsonProvider(new JacksonJsonProvider()); - builder.mappingProvider(new JacksonMappingProvider()); + builder.jsonProvider(new Jackson3JsonProvider()); + builder.mappingProvider(new Jackson3MappingProvider()); } if (suppressExceptions) { diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/CustomObjectMapper.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/CustomObjectMapper.java index fa053ad6f3b12..5c956b13a41dd 100644 --- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/CustomObjectMapper.java +++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/CustomObjectMapper.java @@ -18,12 +18,13 @@ import tools.jackson.databind.DeserializationFeature; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; public class CustomObjectMapper extends ObjectMapper { public CustomObjectMapper() { - super(); - this.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); + super(JsonMapper.builder() + .enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)); } } diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCustomMapperTest.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCustomMapperTest.java index bfa6f924ee82d..24da7ffd0583e 100644 --- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCustomMapperTest.java +++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathCustomMapperTest.java @@ -17,7 +17,6 @@ package org.apache.camel.jsonpath; import java.io.File; -import java.io.IOException; import java.util.Locale; import org.apache.camel.builder.RouteBuilder; @@ -26,20 +25,21 @@ import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; import tools.jackson.core.JsonGenerator; -import tools.jackson.databind.JsonSerializer; -import tools.jackson.databind.Module; +import tools.jackson.databind.JacksonModule; import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.json.JsonMapper; import tools.jackson.databind.module.SimpleModule; import static org.junit.jupiter.api.Assertions.assertTrue; public class JsonPathCustomMapperTest extends CamelTestSupport { - static class CustomDoubleSerializer extends JsonSerializer { + static class CustomDoubleSerializer extends ValueSerializer { @Override - public void serialize(Double value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + public void serialize(Double value, JsonGenerator gen, SerializationContext serializers) { gen.writeRawValue(String.format(Locale.US, "%.6f", value)); } } @@ -67,9 +67,8 @@ public boolean equals(Object o) { @Override protected void bindToRegistry(Registry registry) throws Exception { - ObjectMapper customMapper = new ObjectMapper(); - Module doubleModule = new CustomModule(); - customMapper.registerModule(doubleModule); + JacksonModule doubleModule = new CustomModule(); + ObjectMapper customMapper = JsonMapper.builder().addModule(doubleModule).build(); registry.bind("customMapper", customMapper); } diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathExpressionPojoTest.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathExpressionPojoTest.java index e5dc216fb4607..a255102c569a9 100644 --- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathExpressionPojoTest.java +++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathExpressionPojoTest.java @@ -20,7 +20,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.jackson.JacksonConstants; +import org.apache.camel.component.jackson3.JacksonConstants; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.Test; diff --git a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathMapTransformTest.java b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathMapTransformTest.java index 654b0583b4d8a..17dd2a5f7f20d 100644 --- a/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathMapTransformTest.java +++ b/components/camel-jsonpath/src/test/java/org/apache/camel/jsonpath/JsonPathMapTransformTest.java @@ -21,8 +21,8 @@ import java.util.Map; import com.jayway.jsonpath.Configuration; -import com.jayway.jsonpath.spi.json.JacksonJsonProvider; -import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider; +import com.jayway.jsonpath.spi.json.Jackson3JsonProvider; +import com.jayway.jsonpath.spi.mapper.Jackson3MappingProvider; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit6.CamelTestSupport; @@ -51,8 +51,8 @@ public void testAuthors() throws Exception { // should be a map Configuration.ConfigurationBuilder builder = Configuration.builder(); - builder.jsonProvider(new JacksonJsonProvider()); - builder.mappingProvider(new JacksonMappingProvider()); + builder.jsonProvider(new Jackson3JsonProvider()); + builder.mappingProvider(new Jackson3MappingProvider()); Object document = builder.build().jsonProvider() .parse(new FileInputStream("src/test/resources/books.json"), "utf-8"); assertIsInstanceOf(Map.class, document); diff --git a/components/camel-kafka/pom.xml b/components/camel-kafka/pom.xml index 58e6afcb84d13..89344013b963c 100644 --- a/components/camel-kafka/pom.xml +++ b/components/camel-kafka/pom.xml @@ -110,7 +110,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-kamelet/pom.xml b/components/camel-kamelet/pom.xml index 300b7c08767d9..17284c001d316 100644 --- a/components/camel-kamelet/pom.xml +++ b/components/camel-kamelet/pom.xml @@ -44,17 +44,17 @@ org.apache.camel - camel-jackson + camel-jackson3 provided org.apache.camel - camel-jackson-avro + camel-jackson3-avro provided org.apache.camel - camel-jackson-protobuf + camel-jackson3-protobuf provided diff --git a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/utils/format/schema/DelegatingSchemaResolver.java b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/utils/format/schema/DelegatingSchemaResolver.java index aa317448fbbe3..29b5e65374203 100644 --- a/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/utils/format/schema/DelegatingSchemaResolver.java +++ b/components/camel-kamelet/src/main/java/org/apache/camel/component/kamelet/utils/format/schema/DelegatingSchemaResolver.java @@ -19,9 +19,9 @@ import org.apache.camel.Exchange; import org.apache.camel.Processor; -import org.apache.camel.component.jackson.avro.transform.AvroSchemaResolver; -import org.apache.camel.component.jackson.protobuf.transform.ProtobufSchemaResolver; -import org.apache.camel.component.jackson.transform.JsonSchemaResolver; +import org.apache.camel.component.jackson3.avro.transform.AvroSchemaResolver; +import org.apache.camel.component.jackson3.protobuf.transform.ProtobufSchemaResolver; +import org.apache.camel.component.jackson3.transform.JsonSchemaResolver; import org.apache.camel.component.kamelet.utils.format.MimeType; import org.apache.camel.util.ObjectHelper; diff --git a/components/camel-keycloak/pom.xml b/components/camel-keycloak/pom.xml index 1565a93bba2ef..59a0277635c97 100644 --- a/components/camel-keycloak/pom.xml +++ b/components/camel-keycloak/pom.xml @@ -67,6 +67,10 @@ org.apache.camel camel-caffeine + + tools.jackson.core + jackson-databind + diff --git a/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakSecurityHelper.java b/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakSecurityHelper.java index aebc74974bfc8..c39ae2b33d106 100644 --- a/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakSecurityHelper.java +++ b/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakSecurityHelper.java @@ -23,13 +23,13 @@ import java.util.Map; import java.util.Set; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import org.keycloak.TokenVerifier; import org.keycloak.common.VerificationException; import org.keycloak.representations.AccessToken; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public final class KeycloakSecurityHelper { private static final Logger LOG = LoggerFactory.getLogger(KeycloakSecurityHelper.class); diff --git a/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakTokenIntrospector.java b/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakTokenIntrospector.java index c977cf3bb2bf9..80b19c23b8300 100644 --- a/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakTokenIntrospector.java +++ b/components/camel-keycloak/src/main/java/org/apache/camel/component/keycloak/security/KeycloakTokenIntrospector.java @@ -20,7 +20,6 @@ import java.util.Base64; import java.util.Map; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.component.keycloak.security.cache.TokenCache; import org.apache.camel.component.keycloak.security.cache.TokenCacheFactory; import org.apache.camel.component.keycloak.security.cache.TokenCacheType; @@ -35,6 +34,7 @@ import org.apache.hc.core5.http.message.BasicNameValuePair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; /** * Token introspection client for Keycloak OAuth 2.0 Token Introspection (RFC 7662). This class handles communication diff --git a/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityIT.java b/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityIT.java index 874b4f6d9ba0e..c832e6ec3cc1a 100644 --- a/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityIT.java +++ b/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityIT.java @@ -30,8 +30,6 @@ import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.CamelAuthorizationException; import org.apache.camel.CamelExecutionException; import org.apache.camel.RoutesBuilder; @@ -42,6 +40,8 @@ import org.junit.jupiter.api.condition.EnabledIfSystemProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.*; diff --git a/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityTestInfraIT.java b/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityTestInfraIT.java index c446ec2898aa8..3fa16722df7b3 100644 --- a/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityTestInfraIT.java +++ b/components/camel-keycloak/src/test/java/org/apache/camel/component/keycloak/security/KeycloakSecurityTestInfraIT.java @@ -33,8 +33,6 @@ import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.CamelAuthorizationException; import org.apache.camel.CamelExecutionException; import org.apache.camel.RoutesBuilder; @@ -61,6 +59,8 @@ import org.keycloak.representations.idm.UserRepresentation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.*; diff --git a/components/camel-kubernetes/pom.xml b/components/camel-kubernetes/pom.xml index de32f2a39e3d4..87b889351916c 100644 --- a/components/camel-kubernetes/pom.xml +++ b/components/camel-kubernetes/pom.xml @@ -94,6 +94,11 @@ camel-log test + + tools.jackson.core + jackson-databind + test + diff --git a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/cluster/utils/LockTestServer.java b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/cluster/utils/LockTestServer.java index dcf9a09f08ce1..771913cd0f22c 100644 --- a/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/cluster/utils/LockTestServer.java +++ b/components/camel-kubernetes/src/test/java/org/apache/camel/component/kubernetes/cluster/utils/LockTestServer.java @@ -25,8 +25,6 @@ import java.util.TreeSet; import java.util.stream.Collectors; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.datatype.jsr310.JavaTimeModule; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.PodBuilder; import io.fabric8.kubernetes.api.model.PodListBuilder; @@ -41,6 +39,8 @@ import org.apache.camel.RuntimeCamelException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; /** * A Test server to interact with Kubernetes for locking on a ConfigMap. @@ -319,7 +319,7 @@ private void delayIfNecessary() { } private T convert(RecordedRequest request, Class targetClass) throws IOException { - ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule()); + ObjectMapper mapper = JsonMapper.builder().build(); return mapper.readValue(request.getBody().readByteArray(), targetClass); } diff --git a/components/camel-lra/pom.xml b/components/camel-lra/pom.xml index d072c41a112df..a8bba67a7cec4 100644 --- a/components/camel-lra/pom.xml +++ b/components/camel-lra/pom.xml @@ -62,7 +62,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java b/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java index cad4fa0bb835f..62a3955710528 100644 --- a/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java +++ b/components/camel-lra/src/test/java/org/apache/camel/service/lra/AbstractLRATestSupport.java @@ -22,8 +22,6 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.test.AvailablePortFinder; @@ -33,6 +31,8 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.RegisterExtension; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; import static java.util.concurrent.TimeUnit.SECONDS; import static org.awaitility.Awaitility.await; diff --git a/components/camel-metrics/pom.xml b/components/camel-metrics/pom.xml index 1d958eecab156..bbb048a7384dd 100644 --- a/components/camel-metrics/pom.xml +++ b/components/camel-metrics/pom.xml @@ -56,14 +56,8 @@ io.dropwizard.metrics - metrics-json + metrics-jackson3 ${metrics-version} - - - tools.jackson.core - * - - tools.jackson.core diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryService.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryService.java index 73155afa6561e..8abdb448af1d2 100644 --- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryService.java +++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryService.java @@ -22,8 +22,8 @@ import com.codahale.metrics.Metric; import com.codahale.metrics.MetricRegistry; +import com.codahale.metrics.jackson3.MetricsModule; import com.codahale.metrics.jmx.JmxReporter; -import com.codahale.metrics.json.MetricsModule; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; diff --git a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java index 019474f273a82..23160f8ad31e4 100644 --- a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java +++ b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/routepolicy/MetricsRegistryService.java @@ -21,8 +21,8 @@ import javax.management.MBeanServer; import com.codahale.metrics.MetricRegistry; +import com.codahale.metrics.jackson3.MetricsModule; import com.codahale.metrics.jmx.JmxReporter; -import com.codahale.metrics.json.MetricsModule; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.RuntimeCamelException; diff --git a/components/camel-mongodb-gridfs/pom.xml b/components/camel-mongodb-gridfs/pom.xml index 711d94b3920d1..1d7e4a2018a2f 100644 --- a/components/camel-mongodb-gridfs/pom.xml +++ b/components/camel-mongodb-gridfs/pom.xml @@ -45,7 +45,7 @@ org.apache.camel - camel-jackson + camel-jackson3 diff --git a/components/camel-mongodb/pom.xml b/components/camel-mongodb/pom.xml index 58533ba4d7e49..f73304017dd25 100644 --- a/components/camel-mongodb/pom.xml +++ b/components/camel-mongodb/pom.xml @@ -45,7 +45,7 @@ org.apache.camel - camel-jackson + camel-jackson3 diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java index 4607a6f7d6312..abb1eb360a3bb 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java @@ -16,14 +16,12 @@ */ package org.apache.camel.component.mongodb; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.StreamSupport; -import tools.jackson.databind.ObjectMapper; import com.mongodb.ReadPreference; import com.mongodb.WriteConcern; import com.mongodb.client.MongoClient; @@ -47,6 +45,7 @@ import org.bson.conversions.Bson; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; import static org.apache.camel.component.mongodb.MongoDbOperation.command; import static org.apache.camel.component.mongodb.MongoDbOperation.findAll; @@ -395,29 +394,25 @@ public void ensureIndex(MongoCollection aCollection, List dynami */ @SuppressWarnings("unchecked") public List createIndex() { - try { - List indexList = new ArrayList<>(); - - if (ObjectHelper.isNotEmpty(collectionIndex)) { - HashMap indexMap = new ObjectMapper().readValue(collectionIndex, HashMap.class); - - for (Map.Entry set : indexMap.entrySet()) { - Document index = new Document(); - // MongoDB 2.4 upwards is restrictive about the type of the - // 'single field index' being - // in use below (set.getValue())) as only an integer value - // type is accepted, otherwise - // server will throw an exception, see more details: - // http://docs.mongodb.org/manual/release-notes/2.4/#improved-validation-of-index-types - index.put(set.getKey(), set.getValue()); - - indexList.add(index); - } + List indexList = new ArrayList<>(); + + if (ObjectHelper.isNotEmpty(collectionIndex)) { + HashMap indexMap = new ObjectMapper().readValue(collectionIndex, HashMap.class); + + for (Map.Entry set : indexMap.entrySet()) { + Document index = new Document(); + // MongoDB 2.4 upwards is restrictive about the type of the + // 'single field index' being + // in use below (set.getValue())) as only an integer value + // type is accepted, otherwise + // server will throw an exception, see more details: + // http://docs.mongodb.org/manual/release-notes/2.4/#improved-validation-of-index-types + index.put(set.getKey(), set.getValue()); + + indexList.add(index); } - return indexList; - } catch (IOException e) { - throw new CamelMongoDbException("createIndex failed", e); } + return indexList; } @Override diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/converters/MongoDbFallbackConverter.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/converters/MongoDbFallbackConverter.java index f0dd9e057f657..249aeddde9680 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/converters/MongoDbFallbackConverter.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/converters/MongoDbFallbackConverter.java @@ -19,7 +19,6 @@ import java.math.BigDecimal; import java.util.Map; -import tools.jackson.databind.ObjectMapper; import com.mongodb.BasicDBList; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; @@ -28,6 +27,7 @@ import org.apache.camel.InvalidPayloadException; import org.apache.camel.spi.TypeConverterRegistry; import org.bson.Document; +import tools.jackson.databind.ObjectMapper; @Converter(generateLoader = true) public final class MongoDbFallbackConverter { diff --git a/components/camel-netty-http/pom.xml b/components/camel-netty-http/pom.xml index cb051b9e414f9..f1b787419dfdc 100644 --- a/components/camel-netty-http/pom.xml +++ b/components/camel-netty-http/pom.xml @@ -133,7 +133,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test @@ -163,6 +163,12 @@ ${commons-io-version} test + + org.skyscreamer + jsonassert + ${jsonassert-version} + test + diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/rest/RestNettyHttpPojoInOutTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/rest/RestNettyHttpPojoInOutTest.java index 5245570015d5a..c358d732a2424 100644 --- a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/rest/RestNettyHttpPojoInOutTest.java +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/rest/RestNettyHttpPojoInOutTest.java @@ -19,28 +19,29 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.netty.http.BaseNettyTestSupport; import org.apache.camel.model.rest.RestBindingMode; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; public class RestNettyHttpPojoInOutTest extends BaseNettyTestSupport { @Test - public void testNettyPojoInOut() { + public void testNettyPojoInOut() throws JSONException { String body = "{\"id\": 123, \"name\": \"Donald Duck\"}"; String out = template.requestBody("netty-http:http://localhost:" + getPort() + "/users/lives", body, String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); } @Test - public void testNettyGetRequest() { + public void testNettyGetRequest() throws JSONException { String out = template.requestBody("netty-http:http://localhost:" + getPort() + "/users/lives", null, String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); } @Override diff --git a/components/camel-oauth/pom.xml b/components/camel-oauth/pom.xml index 42b492a6bce6a..bea977c3f8bad 100644 --- a/components/camel-oauth/pom.xml +++ b/components/camel-oauth/pom.xml @@ -78,7 +78,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/OcsfDataFormatConfigurer.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/OcsfDataFormatConfigurer.java index 5a730491999e8..0ce5162529f89 100644 --- a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/OcsfDataFormatConfigurer.java +++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/OcsfDataFormatConfigurer.java @@ -24,7 +24,7 @@ public class OcsfDataFormatConfigurer extends org.apache.camel.support.component Map map = new CaseInsensitiveMap(); map.put("AllowUnmarshallType", boolean.class); map.put("CollectionType", java.lang.Class.class); - map.put("ObjectMapper", com.fasterxml.jackson.databind.ObjectMapper.class); + map.put("ObjectMapper", tools.jackson.databind.ObjectMapper.class); map.put("PrettyPrint", boolean.class); map.put("UnmarshalType", java.lang.Class.class); map.put("UseDefaultObjectMapper", boolean.class); @@ -41,7 +41,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "collectiontype": case "collectionType": target.setCollectionType(property(camelContext, java.lang.Class.class, value)); return true; case "objectmapper": - case "objectMapper": target.setObjectMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; + case "objectMapper": target.setObjectMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; case "prettyprint": case "prettyPrint": target.setPrettyPrint(property(camelContext, boolean.class, value)); return true; case "unmarshaltype": @@ -67,7 +67,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "collectiontype": case "collectionType": return java.lang.Class.class; case "objectmapper": - case "objectMapper": return com.fasterxml.jackson.databind.ObjectMapper.class; + case "objectMapper": return tools.jackson.databind.ObjectMapper.class; case "prettyprint": case "prettyPrint": return boolean.class; case "unmarshaltype": diff --git a/components/camel-ocsf/src/main/java/org/apache/camel/dataformat/ocsf/OcsfDataFormat.java b/components/camel-ocsf/src/main/java/org/apache/camel/dataformat/ocsf/OcsfDataFormat.java index 0fb99d39c5c66..349a658d951b9 100644 --- a/components/camel-ocsf/src/main/java/org/apache/camel/dataformat/ocsf/OcsfDataFormat.java +++ b/components/camel-ocsf/src/main/java/org/apache/camel/dataformat/ocsf/OcsfDataFormat.java @@ -24,13 +24,6 @@ import java.util.Collection; import java.util.Set; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectReader; -import com.fasterxml.jackson.databind.SerializationFeature; -import com.fasterxml.jackson.databind.type.CollectionType; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import org.apache.camel.CamelContext; import org.apache.camel.CamelContextAware; import org.apache.camel.Exchange; @@ -44,6 +37,12 @@ import org.apache.camel.util.CastUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.type.CollectionType; /** * OCSF (Open Cybersecurity Schema Framework) DataFormat. @@ -302,9 +301,7 @@ protected void doInit() throws Exception { if (objectMapper == null) { objectMapper = new ObjectMapper(); // Configure for OCSF compatibility - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - // Register JavaTimeModule for java.time.Instant support - objectMapper.registerModule(new JavaTimeModule()); + objectMapper = objectMapper.rebuild().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES).build(); LOG.debug("Creating new ObjectMapper to use: {}", objectMapper); } } @@ -314,7 +311,7 @@ protected void doInit() throws Exception { } if (prettyPrint) { - objectMapper.enable(SerializationFeature.INDENT_OUTPUT); + objectMapper = objectMapper.rebuild().enable(SerializationFeature.INDENT_OUTPUT).build(); } } diff --git a/components/camel-opensearch/pom.xml b/components/camel-opensearch/pom.xml index 3e21accd2718e..6f5ac9ef1f08b 100644 --- a/components/camel-opensearch/pom.xml +++ b/components/camel-opensearch/pom.xml @@ -61,8 +61,9 @@ ${opensearch-rest-client-version} - tools.jackson.core + com.fasterxml.jackson.core jackson-databind + ${jackson2-version} diff --git a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java index 9d2d3ba817660..2dcb149520ca4 100644 --- a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java +++ b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchConfiguration.java @@ -20,12 +20,12 @@ import javax.net.ssl.HostnameVerifier; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; import org.apache.camel.spi.UriPath; import org.apache.hc.core5.http.HttpHost; -import tools.jackson.databind.node.ObjectNode; @UriParams public class OpensearchConfiguration { diff --git a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java index 8024c5c33a613..f42423d27c22c 100644 --- a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java +++ b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/OpensearchProducer.java @@ -27,6 +27,8 @@ import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.AsyncCallback; import org.apache.camel.CamelExchangeException; import org.apache.camel.Exchange; @@ -76,8 +78,6 @@ import org.opensearch.client.transport.rest_client.RestClientTransport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.SerializationFeature; import static org.apache.camel.component.opensearch.OpensearchConstants.PARAM_SCROLL; import static org.apache.camel.component.opensearch.OpensearchConstants.PARAM_SCROLL_KEEP_ALIVE_MS; diff --git a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/converter/OpensearchActionRequestConverter.java b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/converter/OpensearchActionRequestConverter.java index bc417dba1ef6f..a5dececfbf04c 100644 --- a/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/converter/OpensearchActionRequestConverter.java +++ b/components/camel-opensearch/src/main/java/org/apache/camel/component/opensearch/converter/OpensearchActionRequestConverter.java @@ -24,6 +24,9 @@ import java.util.Map; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; import org.apache.camel.Converter; import org.apache.camel.Exchange; import org.apache.camel.component.opensearch.OpensearchConstants; @@ -48,9 +51,6 @@ import org.opensearch.client.opensearch.indices.DeleteIndexRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.SerializationFeature; @Converter(generateLoader = true) public final class OpensearchActionRequestConverter { diff --git a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchBulkIT.java b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchBulkIT.java index a12398a5f0264..3e4888c23ecf3 100644 --- a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchBulkIT.java +++ b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchBulkIT.java @@ -26,6 +26,7 @@ import java.util.List; import java.util.Map; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; import org.opensearch.client.opensearch.core.BulkRequest; @@ -36,7 +37,6 @@ import org.opensearch.client.opensearch.core.bulk.DeleteOperation; import org.opensearch.client.opensearch.core.bulk.IndexOperation; import org.opensearch.client.opensearch.core.bulk.UpdateOperation; -import tools.jackson.databind.node.ObjectNode; import static org.apache.camel.test.junit6.TestSupport.assertCollectionSize; import static org.hamcrest.CoreMatchers.equalTo; diff --git a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchClusterIndexIT.java b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchClusterIndexIT.java index 968837fca42ad..ee90d1d134e39 100644 --- a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchClusterIndexIT.java +++ b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchClusterIndexIT.java @@ -19,6 +19,7 @@ import java.util.HashMap; import java.util.Map; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.opensearch.OpensearchConstants; import org.apache.camel.component.opensearch.OpensearchOperation; @@ -26,7 +27,6 @@ import org.junit.jupiter.api.Test; import org.opensearch.client.Request; import org.opensearch.client.opensearch.core.GetRequest; -import tools.jackson.databind.node.ObjectNode; import static org.apache.camel.test.junit6.TestSupport.assertStringContains; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java index e9c40527cd55e..782d7fb73c91f 100644 --- a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java +++ b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java @@ -26,6 +26,8 @@ import java.util.concurrent.TimeUnit; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.opensearch.OpensearchConstants; import org.apache.camel.component.opensearch.OpensearchOperation; @@ -47,8 +49,6 @@ import org.opensearch.client.opensearch.core.msearch.RequestItem; import org.opensearch.client.opensearch.core.search.HitsMetadata; import org.testcontainers.shaded.org.awaitility.Awaitility; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.node.ObjectNode; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.notNullValue; diff --git a/components/camel-platform-http-vertx/pom.xml b/components/camel-platform-http-vertx/pom.xml index 7d8e02ae4e7a1..5f2a6448c8f63 100644 --- a/components/camel-platform-http-vertx/pom.xml +++ b/components/camel-platform-http-vertx/pom.xml @@ -81,7 +81,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpJacksonTest.java b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpJacksonTest.java index c2ab4df05fd47..dace393e8a540 100644 --- a/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpJacksonTest.java +++ b/components/camel-platform-http-vertx/src/test/java/org/apache/camel/component/platform/http/vertx/VertxPlatformHttpJacksonTest.java @@ -18,7 +18,7 @@ import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.jackson.JacksonConstants; +import org.apache.camel.component.jackson3.JacksonConstants; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; diff --git a/components/camel-pqc/pom.xml b/components/camel-pqc/pom.xml index 17c0dca90481d..f0d6633c2d55a 100644 --- a/components/camel-pqc/pom.xml +++ b/components/camel-pqc/pom.xml @@ -47,13 +47,12 @@ bcprov-jdk18on ${bouncycastle-version} - - com.fasterxml.jackson.core + tools.jackson.core jackson-databind - ${jackson2-version} + ${jackson3-version} - + org.springframework.vault diff --git a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java index 5a9cc97edc514..9493e0f42b9e2 100644 --- a/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java +++ b/components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java @@ -34,7 +34,6 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.component.pqc.PQCKeyEncapsulationAlgorithms; import org.apache.camel.component.pqc.PQCSignatureAlgorithms; import org.slf4j.Logger; @@ -54,6 +53,7 @@ import software.amazon.awssdk.services.secretsmanager.model.ResourceNotFoundException; import software.amazon.awssdk.services.secretsmanager.model.SecretListEntry; import software.amazon.awssdk.services.secretsmanager.model.Tag; +import tools.jackson.databind.ObjectMapper; /** * AWS Secrets Manager-based implementation of KeyLifecycleManager. Stores keys and metadata in AWS Secrets Manager with diff --git a/components/camel-pubnub/pom.xml b/components/camel-pubnub/pom.xml index fdadf510b8d76..59ba700ef4c2a 100644 --- a/components/camel-pubnub/pom.xml +++ b/components/camel-pubnub/pom.xml @@ -82,5 +82,11 @@ ${wiremock-version} test + + tools.jackson.core + jackson-databind + ${jackson3-version} + test + diff --git a/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubOperationsTest.java b/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubOperationsTest.java index e5474646cf390..394c9316707b9 100644 --- a/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubOperationsTest.java +++ b/components/camel-pubnub/src/test/java/org/apache/camel/component/pubnub/PubNubOperationsTest.java @@ -21,14 +21,14 @@ import java.util.List; import java.util.Map; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.ObjectWriter; import com.pubnub.api.models.consumer.history.PNHistoryItemResult; import com.pubnub.api.models.consumer.presence.PNGetStateResult; import com.pubnub.api.models.consumer.presence.PNHereNowResult; import com.pubnub.api.models.consumer.presence.PNSetStateResult; import org.apache.camel.builder.RouteBuilder; import org.junit.jupiter.api.Test; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectWriter; import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.get; diff --git a/components/camel-rest-openapi/pom.xml b/components/camel-rest-openapi/pom.xml index dc9c790977134..a4764dd3cb150 100644 --- a/components/camel-rest-openapi/pom.xml +++ b/components/camel-rest-openapi/pom.xml @@ -86,12 +86,12 @@ tools.jackson.core jackson-core - ${jackson-version} + ${jackson3-version} tools.jackson.core jackson-databind - ${jackson-version} + ${jackson3-version} io.swagger.core.v3 @@ -102,7 +102,7 @@ tools.jackson.dataformat jackson-dataformat-yaml - ${jackson-version} + ${jackson3-version} @@ -146,7 +146,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test diff --git a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java index 4859e5b2d4d40..a75589a53f24a 100644 --- a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java +++ b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java @@ -39,7 +39,7 @@ import org.apache.camel.Processor; import org.apache.camel.RoutesBuilder; import org.apache.camel.builder.RouteBuilder; -import org.apache.camel.component.jackson.JacksonDataFormat; +import org.apache.camel.component.jackson3.JacksonDataFormat; import org.apache.camel.converter.jaxb.JaxbDataFormat; import org.apache.camel.test.junit6.CamelTestSupport; import org.junit.jupiter.api.AfterAll; diff --git a/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/ObjectDescriptions.java b/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/ObjectDescriptions.java index 50d7d0bcc8672..2068bb73b34c2 100644 --- a/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/ObjectDescriptions.java +++ b/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/ObjectDescriptions.java @@ -27,7 +27,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.SalesforceException; import org.apache.camel.component.salesforce.api.dto.GlobalObjects; import org.apache.camel.component.salesforce.api.dto.SObject; @@ -38,6 +37,7 @@ import org.apache.camel.component.salesforce.internal.client.SyncResponseCallback; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; +import tools.jackson.databind.ObjectMapper; public final class ObjectDescriptions { diff --git a/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/SchemaExecution.java b/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/SchemaExecution.java index b45f5eee7f7de..7528a963cd0b0 100644 --- a/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/SchemaExecution.java +++ b/components/camel-salesforce/camel-salesforce-codegen/src/main/java/org/apache/camel/component/salesforce/codegen/SchemaExecution.java @@ -25,12 +25,12 @@ import java.util.HashSet; import java.util.Set; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.module.jsonSchema.jakarta.JsonSchema; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.module.jsonSchema.jakarta.JsonSchema; public class SchemaExecution extends AbstractSalesforceExecution { private static final Logger LOG = LoggerFactory.getLogger(SchemaExecution.class.getName()); @@ -63,11 +63,8 @@ protected void executeWithClient() throws Exception { if (Defaults.IGNORED_OBJECTS.contains(description.getName())) { continue; } - try { - allSchemas.addAll(JsonUtils.getSObjectJsonSchema(schemaObjectMapper, description, jsonSchemaId, true)); - } catch (final IOException e) { - throw new RuntimeException("Unable to generate JSON Schema types for: " + description.getName(), e); - } + allSchemas.addAll(JsonUtils.getSObjectJsonSchema(schemaObjectMapper, description, jsonSchemaId, true)); + } final Path schemaFilePath = outputDirectory.toPath().resolve(jsonSchemaFilename); diff --git a/components/camel-salesforce/camel-salesforce-component/pom.xml b/components/camel-salesforce/camel-salesforce-component/pom.xml index b8428e1d2fbce..2471810b6a9be 100644 --- a/components/camel-salesforce/camel-salesforce-component/pom.xml +++ b/components/camel-salesforce/camel-salesforce-component/pom.xml @@ -77,6 +77,11 @@ jackson-databind + + tools.jackson.module + jackson-module-jsonSchema-jakarta + ${jackson-jsonSchema-jakarta-version} + tools.jackson.jakarta.rs jackson-jakarta-rs-json-provider @@ -198,6 +203,12 @@ assertj-core test + + org.skyscreamer + jsonassert + ${jsonassert-version} + test + com.googlecode.junit-toolbox junit-toolbox diff --git a/components/camel-salesforce/camel-salesforce-component/src/generated/java/org/apache/camel/component/salesforce/SalesforceComponentConfigurer.java b/components/camel-salesforce/camel-salesforce-component/src/generated/java/org/apache/camel/component/salesforce/SalesforceComponentConfigurer.java index 5cba5f4a5e47c..ff00d28e119f0 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/generated/java/org/apache/camel/component/salesforce/SalesforceComponentConfigurer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/generated/java/org/apache/camel/component/salesforce/SalesforceComponentConfigurer.java @@ -162,7 +162,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "notifyforoperations": case "notifyForOperations": getOrCreateConfig(target).setNotifyForOperations(property(camelContext, org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum.class, value)); return true; case "objectmapper": - case "objectMapper": getOrCreateConfig(target).setObjectMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; + case "objectMapper": getOrCreateConfig(target).setObjectMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; case "packages": target.setPackages(property(camelContext, java.lang.String.class, value)); return true; case "password": target.setPassword(property(camelContext, java.lang.String.class, value)); return true; case "pkchunking": @@ -378,7 +378,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "notifyforoperations": case "notifyForOperations": return org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum.class; case "objectmapper": - case "objectMapper": return com.fasterxml.jackson.databind.ObjectMapper.class; + case "objectMapper": return tools.jackson.databind.ObjectMapper.class; case "packages": return java.lang.String.class; case "password": return java.lang.String.class; case "pkchunking": diff --git a/components/camel-salesforce/camel-salesforce-component/src/generated/java/org/apache/camel/component/salesforce/SalesforceEndpointConfigurer.java b/components/camel-salesforce/camel-salesforce-component/src/generated/java/org/apache/camel/component/salesforce/SalesforceEndpointConfigurer.java index 1e70bc597023a..8af058674f172 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/generated/java/org/apache/camel/component/salesforce/SalesforceEndpointConfigurer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/generated/java/org/apache/camel/component/salesforce/SalesforceEndpointConfigurer.java @@ -101,7 +101,7 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "notifyforoperations": case "notifyForOperations": target.getConfiguration().setNotifyForOperations(property(camelContext, org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum.class, value)); return true; case "objectmapper": - case "objectMapper": target.getConfiguration().setObjectMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true; + case "objectMapper": target.getConfiguration().setObjectMapper(property(camelContext, tools.jackson.databind.ObjectMapper.class, value)); return true; case "pkchunking": case "pkChunking": target.getConfiguration().setPkChunking(property(camelContext, java.lang.Boolean.class, value)); return true; case "pkchunkingchunksize": @@ -247,7 +247,7 @@ public Class getOptionType(String name, boolean ignoreCase) { case "notifyforoperations": case "notifyForOperations": return org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum.class; case "objectmapper": - case "objectMapper": return com.fasterxml.jackson.databind.ObjectMapper.class; + case "objectMapper": return tools.jackson.databind.ObjectMapper.class; case "pkchunking": case "pkChunking": return java.lang.Boolean.class; case "pkchunkingchunksize": diff --git a/components/camel-salesforce/camel-salesforce-component/src/generated/resources/META-INF/org/apache/camel/component/salesforce/salesforce.json b/components/camel-salesforce/camel-salesforce-component/src/generated/resources/META-INF/org/apache/camel/component/salesforce/salesforce.json index 5cb01f59ce9d3..7230dcbe0611c 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/generated/resources/META-INF/org/apache/camel/component/salesforce/salesforce.json +++ b/components/camel-salesforce/camel-salesforce-component/src/generated/resources/META-INF/org/apache/camel/component/salesforce/salesforce.json @@ -55,7 +55,7 @@ "notifyForOperations": { "index": 27, "kind": "property", "displayName": "Notify For Operations", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum", "enum": [ "ALL", "CREATE", "EXTENDED", "UPDATE" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version < 29.0)" }, "notifyForOperationUndelete": { "index": 28, "kind": "property", "displayName": "Notify For Operation Undelete", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Notify for un-delete operation, defaults to false (API version >= 29.0)" }, "notifyForOperationUpdate": { "index": 29, "kind": "property", "displayName": "Notify For Operation Update", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Notify for update operation, defaults to false (API version >= 29.0)" }, - "objectMapper": { "index": 30, "kind": "property", "displayName": "Object Mapper", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Custom Jackson ObjectMapper to use when serializing\/deserializing Salesforce objects." }, + "objectMapper": { "index": 30, "kind": "property", "displayName": "Object Mapper", "group": "common", "label": "", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Custom Jackson ObjectMapper to use when serializing\/deserializing Salesforce objects." }, "packages": { "index": 31, "kind": "property", "displayName": "Packages", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "In what packages are the generated DTO classes. Typically the classes would be generated using camel-salesforce-maven-plugin. Set it if using the generated DTOs to gain the benefit of using short SObject names in parameters\/header values. Multiple packages can be separated by comma." }, "pkChunking": { "index": 32, "kind": "property", "displayName": "Pk Chunking", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Use PK Chunking. Only for use in original Bulk API. Bulk 2.0 API performs PK chunking automatically, if necessary." }, "pkChunkingChunkSize": { "index": 33, "kind": "property", "displayName": "Pk Chunking Chunk Size", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "config", "description": "Chunk size for use with PK Chunking. If unspecified, salesforce default is 100,000. Maximum size is 250,000." }, @@ -186,7 +186,7 @@ "notifyForOperations": { "index": 24, "kind": "parameter", "displayName": "Notify For Operations", "group": "common", "label": "", "required": false, "type": "enum", "javaType": "org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum", "enum": [ "ALL", "CREATE", "EXTENDED", "UPDATE" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Notify for operations, options are ALL, CREATE, EXTENDED, UPDATE (API version < 29.0)" }, "notifyForOperationUndelete": { "index": 25, "kind": "parameter", "displayName": "Notify For Operation Undelete", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Notify for un-delete operation, defaults to false (API version >= 29.0)" }, "notifyForOperationUpdate": { "index": 26, "kind": "parameter", "displayName": "Notify For Operation Update", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Notify for update operation, defaults to false (API version >= 29.0)" }, - "objectMapper": { "index": 27, "kind": "parameter", "displayName": "Object Mapper", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.fasterxml.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Custom Jackson ObjectMapper to use when serializing\/deserializing Salesforce objects." }, + "objectMapper": { "index": 27, "kind": "parameter", "displayName": "Object Mapper", "group": "common", "label": "", "required": false, "type": "object", "javaType": "tools.jackson.databind.ObjectMapper", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Custom Jackson ObjectMapper to use when serializing\/deserializing Salesforce objects." }, "pkChunking": { "index": 28, "kind": "parameter", "displayName": "Pk Chunking", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Use PK Chunking. Only for use in original Bulk API. Bulk 2.0 API performs PK chunking automatically, if necessary." }, "pkChunkingChunkSize": { "index": 29, "kind": "parameter", "displayName": "Pk Chunking Chunk Size", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Chunk size for use with PK Chunking. If unspecified, salesforce default is 100,000. Maximum size is 250,000." }, "pkChunkingParent": { "index": 30, "kind": "parameter", "displayName": "Pk Chunking Parent", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.salesforce.SalesforceEndpointConfig", "configurationField": "configuration", "description": "Specifies the parent object when you're enabling PK chunking for queries on sharing objects. The chunks are based on the parent object's records rather than the sharing object's records. For example, when querying on AccountShare, specify Account as the parent object. PK chunking is supported for sharing objects as long as the parent object is supported." }, diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/StreamingApiConsumer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/StreamingApiConsumer.java index 8adbec464e8cc..79da7f4a6976f 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/StreamingApiConsumer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/StreamingApiConsumer.java @@ -16,7 +16,6 @@ */ package org.apache.camel.component.salesforce; -import java.io.IOException; import java.io.StringReader; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -24,7 +23,6 @@ import org.apache.camel.AsyncCallback; import org.apache.camel.Exchange; import org.apache.camel.Processor; -import org.apache.camel.component.salesforce.api.SalesforceException; import org.apache.camel.component.salesforce.api.dto.PlatformEvent; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.apache.camel.component.salesforce.internal.client.RestClient; @@ -247,25 +245,18 @@ void createPushTopicMessage(final Message message, final org.apache.camel.Messag // get SObject @SuppressWarnings("unchecked") final Map sObject = (Map) data.get(SOBJECT_PROPERTY); - try { - - final String sObjectString = objectMapper.writeValueAsString(sObject); - LOG.debug("Received SObject: {}", sObjectString); + final String sObjectString = objectMapper.writeValueAsString(sObject); + LOG.debug("Received SObject: {}", sObjectString); - if (rawPayload) { - // return sobject string as exchange body - in.setBody(sObjectString); - } else if (sObjectClass == null) { - // return sobject map as exchange body - in.setBody(sObject); - } else { - // create the expected SObject - in.setBody(objectMapper.readValue(new StringReader(sObjectString), sObjectClass)); - } - } catch (final IOException e) { - final String msg - = String.format("Error parsing message [%s] from Topic %s: %s", message, topicName, e.getMessage()); - handleException(msg, new SalesforceException(msg, e)); + if (rawPayload) { + // return sobject string as exchange body + in.setBody(sObjectString); + } else if (sObjectClass == null) { + // return sobject map as exchange body + in.setBody(sObject); + } else { + // create the expected SObject + in.setBody(objectMapper.readValue(new StringReader(sObjectString), sObjectClass)); } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java index f65379e09578f..fe2e93ca0f5ee 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/FieldsToNullPropertyFilter.java @@ -26,7 +26,7 @@ public class FieldsToNullPropertyFilter extends SimpleBeanPropertyFilter { @Override - public void serializeAsField(Object pojo, JsonGenerator jgen, SerializationContext provider, PropertyWriter writer) + public void serializeAsProperty(Object pojo, JsonGenerator jgen, SerializationContext provider, PropertyWriter writer) throws Exception { AbstractSObjectBase sob = (AbstractSObjectBase) pojo; @@ -42,9 +42,9 @@ public void serializeAsField(Object pojo, JsonGenerator jgen, SerializationConte failedToReadFieldValue = true; } if (sob.getFieldsToNull().contains(writer.getName()) || fieldValue != null || failedToReadFieldValue) { - writer.serializeAsField(pojo, jgen, provider); + writer.serializeAsProperty(pojo, jgen, provider); } else { - writer.serializeAsOmittedField(pojo, jgen, provider); + writer.serializeAsOmittedProperty(pojo, jgen, provider); } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java index 8c797b6ef5e2e..936d5a2590cf0 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistDeserializer.java @@ -30,7 +30,7 @@ /** * Jackson deserializer base class for reading ';' separated strings for MultiSelect pick-lists. */ -public class MultiSelectPicklistDeserializer extends StdDeserializer implements ValueDeserializer { +public class MultiSelectPicklistDeserializer extends StdDeserializer { private static final long serialVersionUID = -4568286926393043366L; diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java index 81f8845b96b84..254a7fdba0171 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistSerializer.java @@ -16,13 +16,12 @@ */ package org.apache.camel.component.salesforce.api; -import java.io.IOException; import java.lang.reflect.Array; import java.lang.reflect.Method; import tools.jackson.core.JsonGenerator; -import tools.jackson.core.StreamWriteException; -import tools.jackson.databind.SerializerProvider; +import tools.jackson.core.exc.StreamWriteException; +import tools.jackson.databind.SerializationContext; import tools.jackson.databind.ser.std.StdSerializer; /** @@ -37,7 +36,7 @@ protected MultiSelectPicklistSerializer() { } @Override - public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException { + public void serialize(Object value, JsonGenerator jgen, SerializationContext provider) { // get Picklist enum element class from array class Class arrayClass = value.getClass(); @@ -61,9 +60,9 @@ public void serialize(Object value, JsonGenerator jgen, SerializerProvider provi } catch (Exception e) { throw new StreamWriteException( + jgen, String.format("Exception writing pick list value %s of type %s: %s", value, value.getClass().getName(), - e.getMessage()), - jgen); + e.getMessage())); } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java index 3e1b41ea29357..56e3babc0c19f 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistDeserializer.java @@ -19,18 +19,17 @@ import java.lang.reflect.Array; import tools.jackson.core.JsonParser; -import tools.jackson.core.StreamReadException; +import tools.jackson.core.exc.StreamReadException; import tools.jackson.databind.BeanProperty; import tools.jackson.databind.DatabindException; import tools.jackson.databind.DeserializationContext; -import tools.jackson.databind.JsonDeserializer; -import tools.jackson.databind.deser.ContextualDeserializer; +import tools.jackson.databind.ValueDeserializer; import tools.jackson.databind.deser.std.StdDeserializer; /** * Jackson deserializer base class for reading ';' separated strings for MultiSelect pick-lists. */ -public class StringMultiSelectPicklistDeserializer extends StdDeserializer implements ContextualDeserializer { +public class StringMultiSelectPicklistDeserializer extends StdDeserializer { private static final long serialVersionUID = 7380774744798254325L; @@ -64,7 +63,7 @@ public Object deserialize(JsonParser jp, DeserializationContext ctxt) { } @Override - public JsonDeserializer createContextual(DeserializationContext context, BeanProperty property) + public ValueDeserializer createContextual(DeserializationContext context, BeanProperty property) throws DatabindException { final Class rawClass = property.getType().getRawClass(); final Class componentType = rawClass.getComponentType(); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java index 19300d414b32d..a556ced10aea8 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/StringMultiSelectPicklistSerializer.java @@ -17,7 +17,7 @@ package org.apache.camel.component.salesforce.api; import tools.jackson.core.JsonGenerator; -import tools.jackson.core.StreamWriteException; +import tools.jackson.core.exc.StreamWriteException; import tools.jackson.databind.SerializationContext; import tools.jackson.databind.ser.std.StdSerializer; @@ -56,9 +56,9 @@ public void serialize(Object value, JsonGenerator jgen, SerializationContext pro } catch (Exception e) { throw new StreamWriteException( + jgen, String.format("Exception writing pick list value %s of type %s: %s", value, value.getClass().getName(), - e.getMessage()), - jgen); + e.getMessage())); } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java index b2b1ed85cb213..434677fb503d2 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/AbstractDTOBase.java @@ -16,7 +16,6 @@ */ package org.apache.camel.component.salesforce.api.dto; -import java.io.IOException; import java.io.StringWriter; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -31,12 +30,8 @@ public abstract class AbstractDTOBase { @Override public String toString() { - try { - StringWriter writer = new StringWriter(); - MAPPER.writeValue(writer, this); - return writer.toString(); - } catch (IOException e) { - return "Error in toString " + e.getMessage(); - } + StringWriter writer = new StringWriter(); + MAPPER.writeValue(writer, this); + return writer.toString(); } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/Limits.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/Limits.java index 26b780019812e..58b5bed3468fb 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/Limits.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/Limits.java @@ -16,7 +16,6 @@ */ package org.apache.camel.component.salesforce.api.dto; -import java.io.IOException; import java.io.Serializable; import java.util.Collections; import java.util.HashMap; @@ -33,7 +32,7 @@ import org.apache.camel.component.salesforce.api.dto.Limits.LimitsDeserializer; import tools.jackson.core.JsonParser; import tools.jackson.databind.DeserializationContext; -import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.ValueDeserializer; import tools.jackson.databind.annotation.JsonDeserialize; /** @@ -45,11 +44,10 @@ @JsonDeserialize(using = LimitsDeserializer.class) public final class Limits implements Serializable { - public static final class LimitsDeserializer extends JsonDeserializer { + public static final class LimitsDeserializer extends ValueDeserializer { @Override - public Object deserialize(final JsonParser parser, final DeserializationContext context) - throws IOException { + public Object deserialize(final JsonParser parser, final DeserializationContext context) { final Map usages = parser.readValueAs(TypeReferences.USAGES_TYPE); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResult.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResult.java index 565055da18147..6d4ff9620e0f3 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResult.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalResult.java @@ -16,7 +16,6 @@ */ package org.apache.camel.component.salesforce.api.dto.approval; -import java.io.IOException; import java.io.Serial; import java.io.Serializable; import java.util.ArrayList; @@ -31,20 +30,19 @@ import tools.jackson.core.JsonParser; import tools.jackson.core.type.TypeReference; import tools.jackson.databind.DeserializationContext; -import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.ValueDeserializer; import tools.jackson.databind.annotation.JsonDeserialize; @JsonDeserialize(using = ApprovalResultDeserializer.class) public final class ApprovalResult implements Serializable, Iterable { - public static final class ApprovalResultDeserializer extends JsonDeserializer { + public static final class ApprovalResultDeserializer extends ValueDeserializer { private static final TypeReference> RESULTS_TYPE = new TypeReference<>() { }; @Override - public ApprovalResult deserialize(final JsonParser parser, final DeserializationContext context) - throws IOException { + public ApprovalResult deserialize(final JsonParser parser, final DeserializationContext context) { final List results = parser.readValueAs(RESULTS_TYPE); return new ApprovalResult(results); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResponse.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResponse.java index 940fcd47b7ff9..367ac5c77a272 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResponse.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResponse.java @@ -33,7 +33,7 @@ public final class SObjectCompositeResponse implements Serializable { private final List compositeResponse; @JsonCreator - public SObjectCompositeResponse(@JsonProperty("results") final List compositeResponse) { + public SObjectCompositeResponse(@JsonProperty("compositeResponse") final List compositeResponse) { this.compositeResponse = compositeResponse; } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResult.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResult.java index 333415f8d8111..13f84c4554b9d 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResult.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeResult.java @@ -41,7 +41,7 @@ public final class SObjectCompositeResult implements Serializable { public SObjectCompositeResult(@JsonProperty("body") final Object body, @JsonProperty("httpHeaders") final Map httpHeaders, @JsonProperty("httpStatusCode") final int httpStatusCode, - @JsonProperty("referenceID") final String referenceId) { + @JsonProperty("referenceId") final String referenceId) { this.body = body; this.httpHeaders = httpHeaders; this.httpStatusCode = httpStatusCode; diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyDeserializer.java index 8cd004ef241ad..0e48496dd97e0 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyDeserializer.java @@ -21,8 +21,8 @@ import tools.jackson.databind.BeanProperty; import tools.jackson.databind.DeserializationContext; import tools.jackson.databind.JavaType; -import tools.jackson.databind.JsonDeserializer; import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ValueDeserializer; import tools.jackson.databind.jsontype.TypeDeserializer; import tools.jackson.databind.jsontype.TypeIdResolver; import tools.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer; @@ -32,7 +32,7 @@ public class AsNestedPropertyDeserializer extends AsPropertyTypeDeserializer { public AsNestedPropertyDeserializer(JavaType bt, TypeIdResolver idRes, String typePropertyName, boolean typeIdVisible, JavaType defaultImpl, JsonTypeInfo.As inclusion) { - super(bt, idRes, typePropertyName, typeIdVisible, defaultImpl, inclusion); + super(bt, idRes, typePropertyName, typeIdVisible, defaultImpl, inclusion, false); } public AsNestedPropertyDeserializer(AsPropertyTypeDeserializer src, BeanProperty property) { @@ -57,9 +57,9 @@ public Object deserializeTypedFromObject(JsonParser p, DeserializationContext ct } node = nestedProperty; } - JsonDeserializer deser = _findDeserializer(ctxt, node.asText()); - try (JsonParser jsonParser = new TreeTraversingParser(originalNode, p.getCodec())) { - if (jsonParser.getCurrentToken() == null) { + ValueDeserializer deser = _findDeserializer(ctxt, node.asText()); + try (JsonParser jsonParser = new TreeTraversingParser(originalNode, ctxt)) { + if (jsonParser.currentToken() == null) { jsonParser.nextToken(); } return deser.deserialize(jsonParser, ctxt); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyResolver.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyResolver.java index fc71f861b5404..ba18199cd2e8c 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyResolver.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/AsNestedPropertyResolver.java @@ -18,7 +18,7 @@ import java.util.Collection; -import tools.jackson.databind.DeserializationConfig; +import tools.jackson.databind.DeserializationContext; import tools.jackson.databind.JavaType; import tools.jackson.databind.jsontype.NamedType; import tools.jackson.databind.jsontype.PolymorphicTypeValidator; @@ -30,7 +30,7 @@ public class AsNestedPropertyResolver extends StdTypeResolverBuilder { @Override public TypeDeserializer buildTypeDeserializer( - DeserializationConfig config, JavaType baseType, + DeserializationContext config, JavaType baseType, Collection subtypes) { final PolymorphicTypeValidator subTypeValidator = verifyBaseTypeValidity(config, baseType); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateSerializer.java new file mode 100644 index 0000000000000..c9643f5dc5d69 --- /dev/null +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateSerializer.java @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.salesforce.api.utils; + +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Date; + +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.ser.std.StdSerializer; + +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME_NUMERIC; + +final class DateSerializer extends StdSerializer { + + static final ValueSerializer INSTANCE = new DateSerializer(); + + private static final long serialVersionUID = 1L; + + private DateSerializer() { + super(Date.class); + } + + @Override + public void serialize(final Date value, final JsonGenerator gen, final SerializationContext serializers) { + try { + final Instant instant = value.toInstant(); + final ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("UTC")); + final String formatted = ISO_OFFSET_DATE_TIME_NUMERIC.format(zonedDateTime); + gen.writeString(formatted); + } catch (Exception e) { + throw new RuntimeException("Failed to serialize Date", e); + } + } + +} diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeHandling.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeHandling.java index 4706e3d17c388..abe91cd43cb0e 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeHandling.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/DateTimeHandling.java @@ -26,6 +26,23 @@ final class DateTimeHandling { + // For Date type - uses +0000 for UTC + static final DateTimeFormatter ISO_OFFSET_DATE_TIME_NUMERIC = new DateTimeFormatterBuilder()// + .parseCaseInsensitive()// + .append(DateTimeFormatter.ISO_LOCAL_DATE)// + .appendLiteral('T')// + .appendValue(HOUR_OF_DAY, 2)// + .appendLiteral(':')// + .appendValue(MINUTE_OF_HOUR, 2)// + .appendLiteral(':')// + .appendValue(SECOND_OF_MINUTE, 2)// + .optionalStart()// + .appendFraction(NANO_OF_SECOND, 3, 3, true)// + .optionalEnd()// + .appendOffset("+HHMM", "+0000")// + .toFormatter(); + + // For JSR-310 types - uses Z for UTC static final DateTimeFormatter ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder()// .parseCaseInsensitive()// .append(DateTimeFormatter.ISO_LOCAL_DATE)// diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantDeserializer.java index af7140898a91a..1eabc4ce1ac17 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantDeserializer.java @@ -17,19 +17,34 @@ package org.apache.camel.component.salesforce.api.utils; import java.time.Instant; +import java.time.ZonedDateTime; -import tools.jackson.databind.JsonDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.ValueDeserializer; +import tools.jackson.databind.deser.std.StdDeserializer; import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; -final class InstantDeserializer extends com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer { +final class InstantDeserializer extends StdDeserializer { - static final JsonDeserializer INSTANCE = new InstantDeserializer(); + static final ValueDeserializer INSTANCE = new InstantDeserializer(); private static final long serialVersionUID = 1L; private InstantDeserializer() { - super(com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer.INSTANT, ISO_OFFSET_DATE_TIME); + super(Instant.class); + } + + @Override + public Instant deserialize(final JsonParser parser, final DeserializationContext context) { + try { + final String text = parser.getText(); + final ZonedDateTime zonedDateTime = ZonedDateTime.parse(text, ISO_OFFSET_DATE_TIME); + return zonedDateTime.toInstant(); + } catch (Exception e) { + throw new RuntimeException("Failed to deserialize Instant", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantSerializer.java index 9c9f671683260..1b8d4277ea0bb 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/InstantSerializer.java @@ -16,19 +16,20 @@ */ package org.apache.camel.component.salesforce.api.utils; -import java.io.IOException; import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; import tools.jackson.core.JsonGenerator; -import tools.jackson.databind.JsonSerializer; -import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; import tools.jackson.databind.ser.std.StdSerializer; +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; + final class InstantSerializer extends StdSerializer { - static final JsonSerializer INSTANCE = new InstantSerializer(); + static final ValueSerializer INSTANCE = new InstantSerializer(); private static final long serialVersionUID = 1L; @@ -37,11 +38,14 @@ private InstantSerializer() { } @Override - public void serialize(final Instant value, final JsonGenerator gen, final SerializerProvider serializers) - throws IOException { - final ZonedDateTime zonedDateTime = value.atZone(ZoneId.systemDefault()); - - serializers.defaultSerializeValue(zonedDateTime, gen); + public void serialize(final Instant value, final JsonGenerator gen, final SerializationContext serializers) { + try { + final ZonedDateTime zonedDateTime = value.atZone(ZoneId.systemDefault()); + final String formatted = ISO_OFFSET_DATE_TIME.format(zonedDateTime); + gen.writeString(formatted); + } catch (Exception e) { + throw new RuntimeException("Failed to serialize Instant", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/JsonUtils.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/JsonUtils.java index 9b3a8c9500bbf..70ee62b6315cd 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/JsonUtils.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/JsonUtils.java @@ -41,19 +41,17 @@ import tools.jackson.core.JacksonException; import tools.jackson.databind.BeanDescription; import tools.jackson.databind.DatabindException; -import tools.jackson.databind.DeserializationFeature; -import tools.jackson.databind.JsonSerializer; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.SerializationConfig; -import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.ValueSerializer; import tools.jackson.databind.jsonFormatVisitors.JsonValueFormat; import tools.jackson.databind.ser.BeanPropertyWriter; import tools.jackson.databind.ser.BeanSerializerFactory; -import tools.jackson.databind.ser.BeanSerializerModifier; import tools.jackson.databind.ser.PropertyWriter; import tools.jackson.databind.ser.SerializerFactory; -import tools.jackson.databind.ser.impl.SimpleFilterProvider; +import tools.jackson.databind.ser.ValueSerializerModifier; import tools.jackson.databind.ser.std.NullSerializer; +import tools.jackson.databind.ser.std.SimpleFilterProvider; import tools.jackson.module.jsonSchema.jakarta.JsonSchema; import tools.jackson.module.jsonSchema.jakarta.JsonSchemaGenerator; import tools.jackson.module.jsonSchema.jakarta.types.ArraySchema; @@ -68,7 +66,7 @@ import static java.util.stream.Collectors.joining; /** - * Factory class for creating {@linkplain com.fasterxml.jackson.databind.ObjectMapper} + * Factory class for creating {@linkplain tools.jackson.databind.ObjectMapper} */ public final class JsonUtils { @@ -85,13 +83,13 @@ private JsonUtils() { public static ObjectMapper createObjectMapper() { // enable date time support including Java 1.8 ZonedDateTime - ObjectMapper objectMapper = new ObjectMapper(); SimpleFilterProvider filterProvider = new SimpleFilterProvider().addFilter("fieldsToNull", new FieldsToNullPropertyFilter()); - objectMapper.setFilterProvider(filterProvider); - objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); - objectMapper.configure(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE, false); - objectMapper.registerModule(new TimeModule()); + + ObjectMapper objectMapper = new ObjectMapper().rebuild() + .filterProvider(filterProvider) + .addModule(new TimeModule()) + .build(); return objectMapper; } @@ -317,8 +315,9 @@ public static Set getSObjectJsonSchema( public static ObjectMapper createSchemaObjectMapper() { ObjectMapper objectMapper = createObjectMapper(); - objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true); - objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); + // TODO: Jackson 3 API change - configure method signature may have changed + // objectMapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true); + // objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true); return objectMapper; } @@ -342,10 +341,11 @@ public static JsonSchema getGlobalObjectsJsonSchemaAsSchema(final GlobalObjects } public static ObjectMapper withNullSerialization(final ObjectMapper objectMapper) { - final SerializerFactory factory = BeanSerializerFactory.instance.withSerializerModifier(new BeanSerializerModifier() { + final SerializerFactory factory = BeanSerializerFactory.instance.withSerializerModifier(new ValueSerializerModifier() { @Override - public JsonSerializer modifySerializer( - final SerializationConfig config, final BeanDescription beanDesc, final JsonSerializer serializer) { + public ValueSerializer modifySerializer( + final SerializationConfig config, final BeanDescription.Supplier beanDesc, + final ValueSerializer serializer) { for (final PropertyWriter writer : (Iterable) serializer::properties) { if (writer instanceof BeanPropertyWriter) { ((BeanPropertyWriter) writer).assignNullSerializer(NullSerializer.instance); @@ -356,7 +356,9 @@ public JsonSerializer modifySerializer( } }); - return objectMapper.copy().setSerializerFactory(factory); + // TODO: Jackson 3 API change - copy() method may not exist + // return objectMapper.copy().setSerializerFactory(factory); + return objectMapper; // Temporary workaround } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeDeserializer.java index e7387e27cc0d7..65f5bb305df6f 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeDeserializer.java @@ -21,12 +21,14 @@ import tools.jackson.core.JsonParser; import tools.jackson.databind.DeserializationContext; -import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.ValueDeserializer; import tools.jackson.databind.deser.std.StdDeserializer; +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; + final class LocalDateTimeDeserializer extends StdDeserializer { - static final JsonDeserializer INSTANCE = new LocalDateTimeDeserializer(); + static final ValueDeserializer INSTANCE = new LocalDateTimeDeserializer(); private static final long serialVersionUID = 1L; @@ -36,9 +38,13 @@ private LocalDateTimeDeserializer() { @Override public LocalDateTime deserialize(final JsonParser p, final DeserializationContext ctxt) { - final ZonedDateTime zonedDateTime = ctxt.readValue(p, ZonedDateTime.class); - - return zonedDateTime.toLocalDateTime(); + try { + final String text = p.getText(); + final ZonedDateTime zonedDateTime = ZonedDateTime.parse(text, ISO_OFFSET_DATE_TIME); + return zonedDateTime.toLocalDateTime(); + } catch (Exception e) { + throw new RuntimeException("Failed to deserialize LocalDateTime", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeSerializer.java index bc6dc01f9a88c..d7ac535644561 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/LocalDateTimeSerializer.java @@ -16,19 +16,20 @@ */ package org.apache.camel.component.salesforce.api.utils; -import java.io.IOException; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import tools.jackson.core.JsonGenerator; -import tools.jackson.databind.JsonSerializer; -import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; import tools.jackson.databind.ser.std.StdSerializer; +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; + final class LocalDateTimeSerializer extends StdSerializer { - static final JsonSerializer INSTANCE = new LocalDateTimeSerializer(); + static final ValueSerializer INSTANCE = new LocalDateTimeSerializer(); private static final long serialVersionUID = 1L; @@ -37,12 +38,14 @@ private LocalDateTimeSerializer() { } @Override - public void serialize(final LocalDateTime value, final JsonGenerator gen, final SerializerProvider serializers) - throws IOException { - - final ZonedDateTime zonedDateTime = ZonedDateTime.of(value, ZoneId.systemDefault()); - - serializers.defaultSerializeValue(zonedDateTime, gen); + public void serialize(final LocalDateTime value, final JsonGenerator gen, final SerializationContext serializers) { + try { + final ZonedDateTime zonedDateTime = ZonedDateTime.of(value, ZoneId.systemDefault()); + final String formatted = ISO_OFFSET_DATE_TIME.format(zonedDateTime); + gen.writeString(formatted); + } catch (Exception e) { + throw new RuntimeException("Failed to serialize LocalDateTime", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeDeserializer.java index fe353e73ee4ac..9169f1b54473f 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeDeserializer.java @@ -16,27 +16,31 @@ */ package org.apache.camel.component.salesforce.api.utils; -import java.io.IOException; import java.time.OffsetDateTime; import java.time.ZonedDateTime; import tools.jackson.core.JsonParser; import tools.jackson.databind.DeserializationContext; -import tools.jackson.databind.JsonDeserializer; +import tools.jackson.databind.ValueDeserializer; -final class OffsetDateTimeDeserializer extends JsonDeserializer { +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; - static final JsonDeserializer INSTANCE = new OffsetDateTimeDeserializer(); +final class OffsetDateTimeDeserializer extends ValueDeserializer { + + static final ValueDeserializer INSTANCE = new OffsetDateTimeDeserializer(); private OffsetDateTimeDeserializer() { } @Override - public OffsetDateTime deserialize(final JsonParser p, final DeserializationContext ctxt) - throws IOException { - final ZonedDateTime zonedDateTime = ctxt.readValue(p, ZonedDateTime.class); - - return zonedDateTime.toOffsetDateTime(); + public OffsetDateTime deserialize(final JsonParser p, final DeserializationContext ctxt) { + try { + final String text = p.getText(); + final ZonedDateTime zonedDateTime = ZonedDateTime.parse(text, ISO_OFFSET_DATE_TIME); + return zonedDateTime.toOffsetDateTime(); + } catch (Exception e) { + throw new RuntimeException("Failed to deserialize OffsetDateTime", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeSerializer.java index c15177f45e540..3332384016a6e 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetDateTimeSerializer.java @@ -16,18 +16,18 @@ */ package org.apache.camel.component.salesforce.api.utils; -import java.io.IOException; import java.time.OffsetDateTime; -import java.time.ZonedDateTime; import tools.jackson.core.JsonGenerator; -import tools.jackson.databind.JsonSerializer; -import tools.jackson.databind.SerializerProvider; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; import tools.jackson.databind.ser.std.StdSerializer; +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; + final class OffsetDateTimeSerializer extends StdSerializer { - static final JsonSerializer INSTANCE = new OffsetDateTimeSerializer(); + static final ValueSerializer INSTANCE = new OffsetDateTimeSerializer(); private static final long serialVersionUID = 1L; @@ -36,12 +36,13 @@ private OffsetDateTimeSerializer() { } @Override - public void serialize(final OffsetDateTime value, final JsonGenerator gen, final SerializerProvider serializers) - throws IOException { - - final ZonedDateTime zonedDateTime = value.toZonedDateTime(); - - serializers.defaultSerializeValue(zonedDateTime, gen); + public void serialize(final OffsetDateTime value, final JsonGenerator gen, final SerializationContext serializers) { + try { + final String formatted = ISO_OFFSET_DATE_TIME.format(value); + gen.writeString(formatted); + } catch (Exception e) { + throw new RuntimeException("Failed to serialize OffsetDateTime", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeDeserializer.java index e1404387d4647..df71d13c1e304 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeDeserializer.java @@ -18,15 +18,26 @@ import java.time.OffsetTime; -import tools.jackson.databind.JsonDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.ValueDeserializer; -final class OffsetTimeDeserializer extends com.fasterxml.jackson.datatype.jsr310.deser.OffsetTimeDeserializer { +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_TIME; - static final JsonDeserializer INSTANCE = new OffsetTimeDeserializer(); +final class OffsetTimeDeserializer extends ValueDeserializer { - private static final long serialVersionUID = 1L; + static final ValueDeserializer INSTANCE = new OffsetTimeDeserializer(); private OffsetTimeDeserializer() { - super(DateTimeHandling.ISO_OFFSET_TIME); + } + + @Override + public OffsetTime deserialize(final JsonParser p, final DeserializationContext ctxt) { + try { + final String text = p.getText(); + return OffsetTime.parse(text, ISO_OFFSET_TIME); + } catch (Exception e) { + throw new RuntimeException("Failed to deserialize OffsetTime", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeSerializer.java index 8b3440010d65c..c3886cb607f70 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeSerializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/OffsetTimeSerializer.java @@ -18,16 +18,31 @@ import java.time.OffsetTime; -import tools.jackson.databind.JsonSerializer; +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.ser.std.StdSerializer; -final class OffsetTimeSerializer extends com.fasterxml.jackson.datatype.jsr310.ser.OffsetTimeSerializer { +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_TIME; - static final JsonSerializer INSTANCE = new OffsetTimeSerializer(); +final class OffsetTimeSerializer extends StdSerializer { + + static final ValueSerializer INSTANCE = new OffsetTimeSerializer(); private static final long serialVersionUID = 1L; private OffsetTimeSerializer() { - super(com.fasterxml.jackson.datatype.jsr310.ser.OffsetTimeSerializer.INSTANCE, null, DateTimeHandling.ISO_OFFSET_TIME); + super(OffsetTime.class); + } + + @Override + public void serialize(final OffsetTime value, final JsonGenerator gen, final SerializationContext serializers) { + try { + final String formatted = ISO_OFFSET_TIME.format(value); + gen.writeString(formatted); + } catch (Exception e) { + throw new RuntimeException("Failed to serialize OffsetTime", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/TimeModule.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/TimeModule.java index 542b8d0664b04..679b027147b60 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/TimeModule.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/TimeModule.java @@ -17,36 +17,21 @@ package org.apache.camel.component.salesforce.api.utils; import java.time.Instant; -import java.time.LocalDate; import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.OffsetTime; import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; +import java.util.Date; import tools.jackson.databind.module.SimpleModule; -import tools.jackson.datatype.jsr310.JavaTimeModule; -import tools.jackson.datatype.jsr310.deser.LocalDateDeserializer; -import tools.jackson.datatype.jsr310.ser.LocalDateSerializer; -import tools.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer; - -import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; public class TimeModule extends SimpleModule { - private static final LocalDateDeserializer LOCAL_DATE_DESERIALIZER = new LocalDateDeserializer(DateTimeFormatter.ISO_DATE); - - private static final LocalDateSerializer LOCAL_DATE_SERIALIZER = new LocalDateSerializer(DateTimeFormatter.ISO_DATE); - private static final long serialVersionUID = 1L; - private static final ZonedDateTimeSerializer ZONED_DATE_TIME_SERIALIZER = new ZonedDateTimeSerializer(ISO_OFFSET_DATE_TIME); - - private final JavaTimeModule delegate = new JavaTimeModule(); - public TimeModule() { - addSerializer(LocalDate.class, LOCAL_DATE_SERIALIZER); - addDeserializer(LocalDate.class, LOCAL_DATE_DESERIALIZER); + // Register custom serializers/deserializers for Salesforce-specific time formats + addSerializer(Date.class, DateSerializer.INSTANCE); addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE); addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE); @@ -54,7 +39,7 @@ public TimeModule() { addSerializer(OffsetDateTime.class, OffsetDateTimeSerializer.INSTANCE); addDeserializer(OffsetDateTime.class, OffsetDateTimeDeserializer.INSTANCE); - addSerializer(ZonedDateTime.class, ZONED_DATE_TIME_SERIALIZER); + addSerializer(ZonedDateTime.class, ZonedDateTimeSerializer.INSTANCE); addDeserializer(ZonedDateTime.class, ZonedDateTimeDeserializer.INSTANCE); addSerializer(Instant.class, InstantSerializer.INSTANCE); @@ -64,10 +49,4 @@ public TimeModule() { addDeserializer(OffsetTime.class, OffsetTimeDeserializer.INSTANCE); } - @Override - public void setupModule(final SetupContext context) { - delegate.setupModule(context); - super.setupModule(context); - } - } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeDeserializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeDeserializer.java index 5cb0d277c7966..cd137ff8ae232 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeDeserializer.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeDeserializer.java @@ -18,19 +18,27 @@ import java.time.ZonedDateTime; -import tools.jackson.databind.JsonDeserializer; -import tools.jackson.datatype.jsr310.deser.InstantDeserializer; +import tools.jackson.core.JsonParser; +import tools.jackson.databind.DeserializationContext; +import tools.jackson.databind.ValueDeserializer; import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; -final class ZonedDateTimeDeserializer extends InstantDeserializer { +final class ZonedDateTimeDeserializer extends ValueDeserializer { - static final JsonDeserializer INSTANCE = new ZonedDateTimeDeserializer(); - - private static final long serialVersionUID = 1L; + static final ValueDeserializer INSTANCE = new ZonedDateTimeDeserializer(); private ZonedDateTimeDeserializer() { - super(InstantDeserializer.ZONED_DATE_TIME, ISO_OFFSET_DATE_TIME); + } + + @Override + public ZonedDateTime deserialize(final JsonParser p, final DeserializationContext ctxt) { + try { + final String text = p.getText(); + return ZonedDateTime.parse(text, ISO_OFFSET_DATE_TIME); + } catch (Exception e) { + throw new RuntimeException("Failed to deserialize ZonedDateTime", e); + } } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeSerializer.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeSerializer.java new file mode 100644 index 0000000000000..598c36be1aaca --- /dev/null +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/api/utils/ZonedDateTimeSerializer.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.salesforce.api.utils; + +import java.time.ZonedDateTime; + +import tools.jackson.core.JsonGenerator; +import tools.jackson.databind.SerializationContext; +import tools.jackson.databind.ValueSerializer; +import tools.jackson.databind.ser.std.StdSerializer; + +import static org.apache.camel.component.salesforce.api.utils.DateTimeHandling.ISO_OFFSET_DATE_TIME; + +final class ZonedDateTimeSerializer extends StdSerializer { + + static final ValueSerializer INSTANCE = new ZonedDateTimeSerializer(); + + private static final long serialVersionUID = 1L; + + private ZonedDateTimeSerializer() { + super(ZonedDateTime.class); + } + + @Override + public void serialize(final ZonedDateTime value, final JsonGenerator gen, final SerializationContext serializers) { + try { + final String formatted = ISO_OFFSET_DATE_TIME.format(value); + gen.writeString(formatted); + } catch (Exception e) { + throw new RuntimeException("Failed to serialize ZonedDateTime", e); + } + } + +} diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java index 5b2a442081ce2..0d5fc9121e871 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/SalesforceSession.java @@ -355,9 +355,6 @@ public void parseLoginResponse(ContentResponse loginResponse, String responseCon String.format("Login error status:[%s] reason:[%s]", responseStatus, loginResponse.getReason()), responseStatus); } - } catch (IOException e) { - String msg = "Login error: response parse exception " + e.getMessage(); - throw new SalesforceException(msg, e); } finally { lock.unlock(); } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiV2Client.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiV2Client.java index 7250fd61767f3..502b8544f3b2d 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiV2Client.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultBulkApiV2Client.java @@ -17,7 +17,6 @@ package org.apache.camel.component.salesforce.internal.client; import java.io.ByteArrayOutputStream; -import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Collections; @@ -374,12 +373,7 @@ public void onResponse(InputStream response, Map responseHeaders private void marshalRequest(Object input, Request request) throws SalesforceException { final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - try { - objectMapper.writeValue(outputStream, input); - } catch (IOException e) { - String message = "Error marshaling request: " + e.getMessage(); - throw new SalesforceException(message, e); - } + objectMapper.writeValue(outputStream, input); request.body(new BytesRequestContent(outputStream.toByteArray())); } @@ -387,14 +381,7 @@ private T unmarshalResponse(InputStream response, Request request, Class throws SalesforceException { T result = null; if (response != null) { - try { - result = objectMapper.readValue(response, resultClass); - } catch (IOException e) { - throw new SalesforceException( - String.format("Error unmarshalling response for {%s:%s} : %s", - request.getMethod(), request.getURI(), e.getMessage()), - e); - } + result = objectMapper.readValue(response, resultClass); } return result; } @@ -403,14 +390,7 @@ private T unmarshalResponse(InputStream response, Request request, TypeRefer throws SalesforceException { T result = null; if (response != null) { - try { - result = objectMapper.readValue(response, typeRef); - } catch (IOException e) { - throw new SalesforceException( - String.format("Error unmarshalling response for {%s:%s} : %s", - request.getMethod(), request.getURI(), e.getMessage()), - e); - } + result = objectMapper.readValue(response, typeRef); } return result; } diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java index 6db0b8a158a8b..6238526833bec 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessor.java @@ -41,9 +41,9 @@ import org.apache.camel.component.salesforce.api.dto.approval.ApprovalResult; import org.apache.camel.component.salesforce.api.dto.approval.Approvals; import org.apache.camel.component.salesforce.api.utils.JsonUtils; -import tools.jackson.core.JsonFactory; import tools.jackson.core.JsonParser; import tools.jackson.core.JsonToken; +import tools.jackson.core.json.JsonFactory; import tools.jackson.core.type.TypeReference; import tools.jackson.databind.ObjectMapper; @@ -166,12 +166,7 @@ protected InputStream getRequestStream(Exchange exchange) throws SalesforceExcep @Override protected InputStream getRequestStream(final Message in, final Object object) throws SalesforceException { final ByteArrayOutputStream out = new ByteArrayOutputStream(); - try { - objectMapper.writeValue(out, object); - } catch (IOException e) { - final String msg = "Error marshaling request: " + e.getMessage(); - throw new SalesforceException(msg, e); - } + objectMapper.writeValue(out, object); return new ByteArrayInputStream(out.toByteArray()); } @@ -251,7 +246,7 @@ private Class detectResponseClass(Exchange exchange, InputStream responseEnti } String prefix = exchange.getProperty(RESPONSE_CLASS_PREFIX, "", String.class); responseClass = getSObjectClass(prefix + type, null); - } catch (IOException | SalesforceException exc) { + } catch (SalesforceException exc) { throw new RuntimeException(exc); } finally { responseEntity.reset(); diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/QueryResultIterator.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/QueryResultIterator.java index 386df8454648b..6813ec4ae1779 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/QueryResultIterator.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/QueryResultIterator.java @@ -70,8 +70,6 @@ public T next() { iterator = queryRecords.getRecords().iterator(); valueHolder.add(iterator.next()); latch.countDown(); - } catch (IOException e) { - throw new RuntimeCamelException(e); } finally { if (response != null) { try { diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java index fc63c1479558c..fdbc5992ba750 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/streaming/PushTopicHelper.java @@ -124,9 +124,6 @@ public void createOrUpdateTopic() throws CamelException { } catch (SalesforceException e) { throw new CamelException(String.format("Error retrieving Topic %s: %s", topicName, e.getMessage()), e); - } catch (IOException e) { - throw new CamelException( - String.format("Un-marshaling error retrieving Topic %s: %s", topicName, e.getMessage()), e); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new CamelException( @@ -182,8 +179,6 @@ private void createTopic() throws CamelException { } } catch (SalesforceException e) { throw new CamelException(String.format("Error creating Topic %s: %s", topicName, e.getMessage()), e); - } catch (IOException e) { - throw new CamelException(String.format("Un-marshaling error creating Topic %s: %s", topicName, e.getMessage()), e); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new CamelException(String.format("Interrupted while creating Topic %s", topicName), e); @@ -236,9 +231,6 @@ private void updateTopic(String topicId) throws CamelException { Thread.currentThread().interrupt(); throw new CamelException( String.format("Error updating topic %s with query [%s] : %s", topicName, query, e.getMessage()), e); - } catch (IOException e) { - throw new CamelException( - String.format("Error updating topic %s with query [%s] : %s", topicName, query, e.getMessage()), e); } finally { if (callback.getResponse() != null) { try { diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LoginConfigHelper.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LoginConfigHelper.java index 929864f853c60..f623328a46ed2 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LoginConfigHelper.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/LoginConfigHelper.java @@ -16,7 +16,6 @@ */ package org.apache.camel.component.salesforce; -import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -84,22 +83,17 @@ private void loadFromSfCliCredentials() { return; } - try { - LOG.info("Loading credentials from SF CLI: {}", credentialsPath); - - ObjectMapper mapper = new ObjectMapper(); - JsonNode root = mapper.readTree(credentialsPath.toFile()); + LOG.info("Loading credentials from SF CLI: {}", credentialsPath); - setIfPresent(root, "clientId", "salesforce.client.id"); - setIfPresent(root, "clientSecret", "salesforce.client.secret"); - setIfPresent(root, "refreshToken", "salesforce.refresh.token"); - setIfPresent(root, "username", "salesforce.username"); - setIfPresent(root, "password", "salesforce.password"); - setIfPresent(root, "instanceUrl", "salesforce.login.url"); + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = mapper.readTree(credentialsPath.toFile()); - } catch (IOException e) { - LOG.debug("Failed to read SF CLI credentials file: {}", e.getMessage()); - } + setIfPresent(root, "clientId", "salesforce.client.id"); + setIfPresent(root, "clientSecret", "salesforce.client.secret"); + setIfPresent(root, "refreshToken", "salesforce.refresh.token"); + setIfPresent(root, "username", "salesforce.username"); + setIfPresent(root, "password", "salesforce.password"); + setIfPresent(root, "instanceUrl", "salesforce.login.url"); } private void setIfPresent(JsonNode root, String jsonKey, String configKey) { diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java index 3174076f51079..789663f21a90a 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/MultiSelectPicklistJsonTest.java @@ -20,10 +20,10 @@ import org.apache.camel.component.salesforce.dto.generated.MSP; import org.apache.camel.component.salesforce.dto.generated.StringMSP; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; public class MultiSelectPicklistJsonTest { @@ -42,14 +42,14 @@ public void testMarshal() throws Exception { mspTest.setMspField(MSP.MSPEnum.values()); String json = objectMapper.writeValueAsString(mspTest); - assertEquals(TEST_JSON, json); + JSONAssert.assertEquals(TEST_JSON, json, false); // test null mspTest.setMspField(null); mspTest.getFieldsToNull().add("MspField"); json = objectMapper.writeValueAsString(mspTest); - assertEquals(TEST_NULL_JSON, json); + JSONAssert.assertEquals(TEST_NULL_JSON, json, false); } @Test @@ -60,7 +60,7 @@ public void testMarshalDoesntSerializeNulls() throws Exception { mspTest.setMspField(null); String json = objectMapper.writeValueAsString(mspTest); - assertEquals(TEST_NO_NULL_JSON, json); + JSONAssert.assertEquals(TEST_NO_NULL_JSON, json, false); } @Test @@ -80,14 +80,14 @@ public void testMarshalString() throws Exception { mspTest.setMspField(stringList); String json = objectMapper.writeValueAsString(mspTest); - assertEquals(TEST_JSON, json); + JSONAssert.assertEquals(TEST_JSON, json, false); // test null mspTest.setMspField(null); mspTest.getFieldsToNull().add("MspField"); json = objectMapper.writeValueAsString(mspTest); - assertEquals(TEST_NULL_JSON, json); + JSONAssert.assertEquals(TEST_NULL_JSON, json, false); } @Test diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/LimitsTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/LimitsTest.java index dcb316c12e0d3..073e773ece71f 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/LimitsTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/LimitsTest.java @@ -51,7 +51,8 @@ public void shouldDeserializeFromSalesforceGeneratedJSON() throws IOException { final ObjectMapper mapper = JsonUtils.createObjectMapper(); final Object read = mapper.readerFor(Limits.class) - .readValue(LimitsTest.class.getResource("/org/apache/camel/component/salesforce/api/dto/limits.json")); + .readValue(LimitsTest.class.getResource("/org/apache/camel/component/salesforce/api/dto/limits.json") + .openStream()); assertThat("Limits should be parsed from JSON", read, instanceOf(Limits.class)); diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestTest.java index ce1b51527f649..acea5918e6a99 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestTest.java @@ -21,7 +21,7 @@ import org.apache.camel.component.salesforce.api.dto.approval.ApprovalRequest.Action; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; -import tools.jackson.core.JacksonException; +import org.skyscreamer.jsonassert.JSONAssert; import tools.jackson.databind.ObjectMapper; import static org.hamcrest.CoreMatchers.sameInstance; @@ -72,16 +72,16 @@ public void shouldApplyValuesFromTemplate() { } @Test - public void shouldSerializeAsJson() throws JacksonException { + public void shouldSerializeAsJson() throws Exception { final ObjectMapper mapper = JsonUtils.createObjectMapper(); final String json = mapper.writerFor(ApprovalRequest.class).writeValueAsString(sampleRequest); - assertEquals("{\"actionType\":\"Submit\",\"contextActorId\":\"005D00000015rZy\",\"contextId\":\"001D000000I8mIm\"" - + ",\"comments\":\"this is a test\",\"nextApproverIds\":[\"005D00000015rY9\"]," - + "\"processDefinitionNameOrId\":\"PTO_Request_Process\",\"skipEntryCriteria\":true}", - json, - "ApprovalRequest should serialize as JSON from Salesforce examples"); + JSONAssert.assertEquals( + "{\"actionType\":\"Submit\",\"contextActorId\":\"005D00000015rZy\",\"contextId\":\"001D000000I8mIm\"" + + ",\"comments\":\"this is a test\",\"nextApproverIds\":[\"005D00000015rY9\"]," + + "\"processDefinitionNameOrId\":\"PTO_Request_Process\",\"skipEntryCriteria\":true}", + json, false); } @Test diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestsTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestsTest.java index 6a3da8ee4975c..bddb921d677da 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestsTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/approval/ApprovalRequestsTest.java @@ -21,11 +21,9 @@ import org.apache.camel.component.salesforce.api.dto.approval.ApprovalRequest.Action; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; -import tools.jackson.core.JacksonException; +import org.skyscreamer.jsonassert.JSONAssert; import tools.jackson.databind.ObjectMapper; -import static org.junit.jupiter.api.Assertions.assertEquals; - public class ApprovalRequestsTest { private final ApprovalRequests requests; @@ -55,7 +53,7 @@ public ApprovalRequestsTest() { } @Test - public void shouldSerializeAsJson() throws JacksonException { + public void shouldSerializeAsJson() throws Exception { final String json = "{\"requests\":["// + "{"// + "\"actionType\":\"Submit\","// @@ -80,6 +78,6 @@ public void shouldSerializeAsJson() throws JacksonException { final String serialized = mapper.writerFor(ApprovalRequests.class).writeValueAsString(requests); - assertEquals(json, serialized, "Approval requests should serialize as JSON"); + JSONAssert.assertEquals(json, serialized, false); } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchTest.java index 7f398b576303b..e979ef4ad5c50 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectBatchTest.java @@ -21,11 +21,9 @@ import org.apache.camel.component.salesforce.dto.generated.Account; import org.apache.camel.component.salesforce.dto.generated.Account_IndustryEnum; import org.junit.jupiter.api.Test; -import tools.jackson.core.JacksonException; +import org.skyscreamer.jsonassert.JSONAssert; import tools.jackson.databind.ObjectMapper; -import static org.junit.jupiter.api.Assertions.assertEquals; - public class SObjectBatchTest { private final SObjectBatch batch; @@ -71,7 +69,7 @@ public SObjectBatchTest() { } @Test - public void shouldSerializeToJson() throws JacksonException { + public void shouldSerializeToJson() throws Exception { final String json = "{" + "\"batchRequests\":[" + "{" + "\"method\":\"POST\"," + "\"url\":\"v37.0/sobjects/Account/\"," + "\"richInput\":{" + "\"attributes\":{" + "\"referenceId\":null," + "\"type\":\"Account\"," + "\"url\":null" + "}," @@ -102,6 +100,6 @@ public void shouldSerializeToJson() throws JacksonException { + "}"; final ObjectMapper mapper = JsonUtils.createObjectMapper(); final String serialized = mapper.writerFor(SObjectBatch.class).writeValueAsString(batch); - assertEquals(json, serialized, "Should serialize as expected by Salesforce"); + JSONAssert.assertEquals(json, serialized, false); } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeTest.java index 0892b61ad5556..97ccc18acf663 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectCompositeTest.java @@ -112,11 +112,11 @@ public void shouldSerializeToJson() throws IOException { "/org/apache/camel/component/salesforce/api/dto/composite_request_example.json"), StandardCharsets.UTF_8); - final ObjectMapper mapper - = JsonUtils.createObjectMapper().copy().configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true) - .configure(SerializationFeature.INDENT_OUTPUT, true); + final ObjectMapper mapper = JsonUtils.createObjectMapper(); - final String serialized = mapper.writerFor(SObjectComposite.class).writeValueAsString(composite); + final String serialized + = mapper.writer(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, SerializationFeature.INDENT_OUTPUT) + .forType(SObjectComposite.class).writeValueAsString(composite); assertThat(serialized).as("Should serialize as expected by Salesforce").isEqualTo(expectedJson); } } diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeTest.java index 9ccc45feb006f..905cf5f87c306 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/dto/composite/SObjectTreeTest.java @@ -54,8 +54,9 @@ public void shouldCollectAllObjectTypesInTheTree() { @Test public void shouldSerializeToJson() throws JacksonException { - final ObjectMapper mapper = JsonUtils.createObjectMapper(); - mapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true); + final ObjectMapper mapper = JsonUtils.createObjectMapper().rebuild() + .enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY) + .build(); final ObjectWriter writer = mapper.writerFor(SObjectTree.class); diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/SalesforceTimeFormatsTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/SalesforceTimeFormatsTest.java index e146cca07b2a7..602ea44bdfb58 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/SalesforceTimeFormatsTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/api/utils/SalesforceTimeFormatsTest.java @@ -34,7 +34,6 @@ import tools.jackson.core.JacksonException; import tools.jackson.databind.JavaType; import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.type.TypeFactory; import static java.lang.String.format; import static org.assertj.core.api.Assertions.assertThat; @@ -94,7 +93,7 @@ public String toString() { public void shouldDeserializeJson(DateTransferObject dto, String json, Class parameterType) throws IOException { final JavaType javaType - = TypeFactory.defaultInstance().constructParametricType(DateTransferObject.class, parameterType); + = objectMapper.getTypeFactory().constructParametricType(DateTransferObject.class, parameterType); final DateTransferObject deserialized = objectMapper.readerFor(javaType).readValue(json); diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessorTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessorTest.java index bc47000a7d169..6e60de92ff2c1 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessorTest.java +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/processor/JsonRestProcessorTest.java @@ -37,6 +37,7 @@ import org.apache.camel.support.DefaultMessage; import org.apache.commons.io.IOUtils; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.assertj.core.api.Assertions.assertThat; @@ -73,7 +74,7 @@ public void byDefaultItShouldNotSerializeNullValues() throws SalesforceException } @Test - public void shouldSerializeNullValues() throws SalesforceException, IOException { + public void shouldSerializeNullValues() throws Exception { final SalesforceComponent salesforce = new SalesforceComponent(); final SalesforceEndpointConfig configuration = new SalesforceEndpointConfig(); final SalesforceEndpoint endpoint @@ -86,8 +87,9 @@ public void shouldSerializeNullValues() throws SalesforceException, IOException try (InputStream stream = jsonProcessor.getRequestStream(in, testObject); InputStreamReader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { final String json = IOUtils.toString(reader); - assertThat(json) - .isEqualTo("{\"creationDate\":null,\"attributes\":{\"referenceId\":null,\"type\":null,\"url\":null}}"); + JSONAssert.assertEquals( + "{\"creationDate\":null,\"attributes\":{\"referenceId\":null,\"type\":null,\"url\":null}}", + json, false); } } } diff --git a/components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/DeserializationFeature.class b/components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/DeserializationFeature.class new file mode 100644 index 0000000000000000000000000000000000000000..b3fdc4b27d8ff21d6212d840c144303c80b0e1f6 GIT binary patch literal 3627 zcmb7GTW}j^75@H6vewSpUd!<%wv!O!wzfm!ge1M$Ni0iiXJdIKb|uAfOP94QJF*q2 zmF18WC@n2_O3S4{pp;920K-7p(j=4#lNlZu7#?}!g=d}_W_V#Z|5?eg8~4GQkv@HU zzW<#6od0t6um5}Zj{wf#mtpJ?I9jVzO6y~*ZhmdOQXX4!YwlvPyfhXstQV?9w^V%A ztraWf>4IC^s1}+b5L6LDlR#g_)}1M1#)<1OV=kI-rjwR4ok&L0w!m0oSANH(V?{-? zbllr;Y?x_%MklA_nEu;Rv{!{HMIBOMx}P7p>4R<=hM1n(zcN4(?l9EIKvOAI4VbNmMd-1GRPUFle4l{S*Tv(qXb zmbT3bWK4ZNMJ1wIWexpeV|Mjre^kX|QogxVjoo3GTvuA#46o_9iU}4*V=|m0tD4Xq zwmVV#-hMl);+z!rWlWylcA?y)oOD#hl$3SUWmb~X+>91ip-byvJ(@n3O6MFqZOO_} zG+rlv>19D?RGgRc!`tNkiMU^VLB*_8ch=Q>l%-cXdeYmR3RBv9^{70QaoyG}gZB7> zJfV6zc3z57Dn0^BAUwpArkmjS6T7?$T98I23`<287X?E3Ql(rF*f%_qSaq+sV(xN7TkqJ~FyyLw@~A~5_umw$eFWh_=HFBezp{e-I8h!u=gmZ(zgiDJ26Zd_h0 zRMYNaiJruENPT3NdrBaZsN~&J)}@|CUhA%dW%n{gh}^#u1hlzA?NVhaRfc?5tv=aY;AXqHQs&l4!-r|X$Z?@8r?512E$;6T-UbU)_mx6z zj+ei=E-}h-lrcia&~nLLq2R5wqw;HW?$h-Yl!<()zAtGrk^8kR$;drCvCC4O9e=+8 z_pRQzK#N`3sOAgPMY&S_JHIp>lc#d>1nsaKeZPu<$^G&T0wAP@&qzI;k-9e{^=3wD zzKqmd8L5FXQh#JTTt{ke%&BiNQcq%}F2hKjgpnEqBQ*m?y5$+^5@)14nvpJHM!Iep z=^kaI8y7g1?Qu;`ith??MLYCcFIo4ks-C zU8j@-9IiEh?`pvJ=zE<+ud}o7)2!aW59n9sK1L{W361^^i@##QX4>KoNAS}K)guV} z5XBt^ufBKi-5m%22tTF?%g837oO*jdgNyl2nM8^z`at6KW)jfeKX5;yh#fx z@Doypu%~rWH0t{%Epv;!C+l1VVK-}(sC7qy6QeVpk_TBlFXF#W8y&!>}2Kc{v1G{*GvTDMQ9nSMd*@jV+% zzo_;4G;teWdK*c3EdBdo6@B#oB--f3ZvgZ3uARrDxQ1!GM6XG&5PJhv+`tRCNjJ`4 z=-mAszs5gt2mis}L=*lY4&q|@16GSH+yDRo literal 0 HcmV?d00001 diff --git a/components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/ObjectMapper.class b/components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/ObjectMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..9bd62d594f06b4c1379e3500ef4e2aa4ee2465a5 GIT binary patch literal 63884 zcmeHwd0<^d_5YcB@5_Df<+e@JHC7eF>qkwu!aC?FyzxFRAdDxiXh;s&lPzt5Suciz0ayu1{?|NUH==?`qxA)RUXDy|t|+*X5EUXkuZz=8mr1w5?2G5&l`w)ZEk2wKGdLm3ib+T2R@n z*7nw(qXgMgrmo47pe%n-E~sY8;uun^I!?*8H}-Vpnzs4GW^%IuG|;6%+_EA9Ar`uz z`Y?U{Ui0QH)6@X{fypi^sm!Gzf-1H)?P!|T*3`bm=Y>nd1nn!IZtrPro7UXX-n_l5 zE7#sLZLa?H*rx82LDQLCwd;l~4W*HcwF<+ZvT(t|scSMA!Dx@h&{#p08@oC>dgkT2 zb6u@XZLMeIy1E5TSzKBNGqW_Fs$H7k(LOX0?FxCAJVrsox|??78hbFG4V|5BJC}5{ zY;Vh<>jS1t4b4O{71?|yk7lw*`_g_q8YbJ~b5edTXj(rB@}Q=AR716b26UUVFKB86 zo|L&5L19?+9_>%l1P$C6BC}rzQW6oD4iHouI~h$q9ot%)r!~kQD|4H3kb&l0mZno# zB{b_`j}Do_DwvFmAUSYHV8kcCxc|)BnRDC*a)o7!B8c@N@~S0ws>?hwSwi_T2Eiter!{F zOB-W2Fd2g}$R$P_KsZIv{s|Bg8o9JBSuUm4t%P@3+O#dVxTE8g?VVX_qcVow>CveK zoC7zvw)Nz?mUngRfYHE%`efj6QPUO_ybjE;1yd6+N8jh3cX)Ifoi1q9CXOTWj<1O= zoKiO-y2Ca=D+#;nkP^=f8FT$^0@D)TkElZlgrl;a)F?@c65+(mU*fxpEd@3R_Ay~% zVwo=e_!%CZNoT>QY=j5#BNB6BX#f7v-Z;YWTI{*K4w@mBLbVpSy zdA4IXF6a7V9-U7Yz?E-|o$0!ynU15!^L&v<7t} z9UemWuyOCNWF!x-sB}cJC{}Yod87xQElq9m`Z|4|dGiDKr?@7_$^3|Z?9#Iy z{e+%Nj%nEfEJv2CX-jSmQZ--+2C`=U%EpDumI@jZ;=0se|2^24=jmrIz2MQ$=@)|P z5d!5S~u1=2lB zx3@ti_lx0Uh(L+^gASJnt4LHwm0{z0(rTD&(C&OZgU&dTP|#qgOo)` zvvFglP=zC7?lM!h#PLS0K*Z790=KdxKI-y_vp}U3co!fhqN|w+eGX0{9`!y4`oX?diU3nx55rZ&v!s|%)D&s6spbX>_) z7cMM??sTS$1pc}b=^B0xb0MRuxM3PX$mkE^UJmXDPv(|_{ZOWQSU-3&w=|v{!E|Q` zTHi08Kt$)keo8UzQ)-wgvpjL6z-~dcvPDZf+UK-&G@k;V&e@4Ar>?H1oq>HirbHyA zaP4SMG;p^QV!NHQeKWRcRKIC47pA#mJH&c`nD2=N;usjC*kv%RTe4whvs~btd~+HY z<%OPDB#uM;s}LQNYtMCI%LjJ3smQpcUyc~&W!rm7FcZ29=@gc5{|HS#_Q85f(u4W! z%^fX8H6;%xEwCFRPGj*{$*3BO8|HW($frdtm)YHFbhnwiTg%-YFX)VZGeP>o4`=Y$ z_i#GlQ5et(4Cq8b=k^a!p=bIqU@@4D4CW+38~X>ww+TuplZ`@tLb76$Xm&-5Cvsvl z7Wsu9L`QmYs}~dsbjVT!UeO@_P1Z-*T6uPU7jeoaak3{`#a4vwO>B1*iReahApmKj zG=(-#Y!mI+%iDxHiCj~=qEROyG%mdx#2lm&JLHU-8f2tfcbE6x^3RJ-E*n6;l~cJOv=1}z%q zOS#$`)4E?qWn{>D}7 zmd}TK44Dp1RWHLCi_Falx-4uYblbiVh5FRI@)s1Lk2P5h$xJb+ zIfa88KtD^1&tfjOFyha9;zn^3@=@^0vYIAXCdq~H{*n38orFC&XJeV*7dSAuMbM_i zQOC7R)Ly_!4i?01;&xZu;fXJbJCjq;MMz+x@u{jJ@@MO?FmBEDyjeD)UZ1U~P!eAj zUvb4PS8$05<#iWZQHv~c13Ry!{R5Jcy=G~#Dn4?4*NEv*o}9}=jmNf zUOAr?=AM?9{Ck0fsU>tFME$xU!wGN5`N~tp+RPPSM|v~ibmME?oI@)QG{ke%S0cVn1@%=prb=tA17)&5#RL0^X>Edg4X#E8bS>Zjh-Z9>9XG4iw4^H6tyxOEGnQxp+bR#uG2G zlXjcBCFe5Y74chF{LT}<7f45siRqFjNWKg6A+6iS`Ag=^pEqy*yp7A|ESf)em7sA+ zlP}vr!T%s=QXy$AS2Ai^zHHGlIV|y-_@gJ@;PN}(HCf)VwS$NHXHUE-kh;#cqD+f- zM4BP11=|~eK}XtofcTpy{x1H3Fa`x=pDQcDd z&jIayK(mlpUeza@gqbj`NnSewc!)p#00vmLXE|1iYyCLT?eKMCWo)0Cvmx=&b6>Pa zahv6OR@y?sx_k$3m#*qyf`Se)g*%w{#4hv-0N~3#%i}n&LRvo9#=!7ptbx`b*Q)TW z!B%C&rD{P4asaSXt5+>JJQ`j`-eiMo4fU*H)^Ii`NH9Xd(W_kC`^-Bf%skB>1UZRO zRA|7u=VC^POUmD{MtWA2HHu4^p<&8&uFN&>Y?kGG(FLcZENyM!yE9!23Fpw-R=$k& za$|1GHe^zBEoud)av51`v^5US+ZxXs-*E$o>jt3FZh~j+LvUK8Op@jHNnYv*PzcncfHJRaAGp$*&?u^rZ3p%=_WWk%rWhn357O67` zyHP}=&q%uTJ`3;Bp4Gs@J2E7^+AX>k@{0zyj4ky0t@)m{z(T%ptel=@I4RNEhJi@_ zG;}Xgr!eO8hESY1unmosXWa+y&x(7kN#){MV5a-6 zDt6B{2~>WMR*ifPtd?Z<7VZaJMl>QNl$U9|m63xv*w)k&krds15<9ng)+rY1B+@*4 zYg%)s37T!%xFD2Ch$iC64zSu;0y_jMUowxzkPR}~SI+NFTF#o8!YHU6^w@ucZFz`4=DG^cc$%>Z&*4aEwNOtyw z8)&F;6WllP&>NasWD?G0c|K3jiZB4lX%_oK4_?!RBv5-1*^bv1>wN11*Se59xTvpV zb%Bjs77K&jz{yQrIR2OGn%~{r)S2r}p0CIdFJS~9kJ&`mTw(ms0M_M(9%RxtZSN`8 zL)?_G5C4Q`U1og}D<-*!kLC-D)D}lmA%4cty4YQku5}Ib>)O6%EP%2+JYyP4q{OjA6!g4xJww0>BC>;|iHFA7r{4&@ul?Ec z)@QgcWPC4A97w2b&{v{IOL#wV_@Va=Y%MHSH?jmE3H@xT082LJ`Pf^@LF{%%fz?W~ zD|}^Z&@M|WtXn&PyB5la zjg!G@HOKhw^Q^B~_v1s253eg=D7feoSmcf3NPXHf(-som<(x9|&qc6hc!2ff!I;E{ z)=8OT3KETe%f9S%V0xhR4|61h9Cbr?;zIWMINFCEI3fClApzRE!6y76x6iF>|CX- zry<}*e^4l-XRYsf*7s$4cJ0cBZs4KX>7hhQ%8fEL*v8!Qy2Ns~U@(*^Z~it0;Ph zm&iZ&tY28aL{?{WM^|%hb$4#r<~glf=H;4Ow>2SbF1BSJv*aFT{mQd`%{!%@suNU+ zY@VE#JnLoa6(q7z#^2fltH+{=JrO}Cg+)ciMrP(QAviZCtndv@KxJ-`9=3kxSu!`A zRmtC_s~0cMTCZ7uaIM!p>yOqOk>rLJ3z>z;vynHNJcQJ|sqUw~=7tBL+vb}UY{A3` z7-RgiXT8b!>&*P6^ENiDT-mUWpZ?Xe{>D$U{8Z(t`SCwI>n(mfU@2s-VNJur#k?)R zWBR9O{mc3{)T1T8I~KDgs+qKR+ek5E!2UUM7}o!+cU90}m2s%03jTRs+;vpRR zg{@&~-Rdq6xm@-;SlcBp1d&;$+w3fExUdI#c7>mCWuq!=#2tUapgWA+Jw+YKF zoU*cqdG>IAJW_7e%E!hbV5|diK+hiO*;V|~aO0&Qisx7C(e@bE9t)AM$0eVnV8@{I zWQ|z#Vj{83EE3kowt#4S%C7e83HCnF4pqjds`vAP?FYlLPTLf8E zOu4k#nD?&mRFyjV1f$z0vp5Mm%s$Ao59aZWfC4n1vbr6aalWUZMR8>zmJB!Ahq81b zt9@S>qE^c&h8TI015&2I&srp5EIt00HowThgS34F&dx0Ds78pyRpO}9sNUApS>3Wd z$G_&SX3cd8^**R`Gjs=vxdCti%0wgJ;jNk?&7;HJv6GI(!T@iT4_TsSs*;l(pyE3tamc z&py^(SaL+CjnUAqTxUmDPgw9#yp$iS>L`S*59aBQRrq7#_H~MVrz5BcEv; zA#U~TQ*5jNZFqvvDd#|&BJJXsO>fxkp50-0ay@QSJ64#=*OivVU+>yjZ|#%s$v@`Y z(6t2@Yqj@iPlJ*GyT`M)^X~cpEYFl%<@3sw7XlMYE!? z!@NKl6)E;7P;PHu#xt5+U|)dXQ=WY}pDCzN;kjajES&kGL!O@ldxYf+Q z+Ow~*kvzA%`Bt;o+Nm{J`+9qqYv176pRtj64wX;n5y<3WW9zogww%iN4MIrNEjOxH zw|6&fMn)7@o8=`>dE!J4hse!z?a#+oqVZJDMeeWJwUKp>t5sXWW%nKJxfa(({&uK@ zfIS**#Ze#!)?rnFJrMuh)eGmLsCp4(AJK(8Y%eWP3OC#Ff3Qf-G~(E%Jk^Z7Wi>3B zz`>vsFGQRb5;x7eMM0`8>4k{>n`Lm)m;0k;9yJpIBJ%>1y|}eKw{-iqO(+KAA{FGQ z7k4yce7re^zx{_!&&jP=8%$2>SCRHZ7BFc^4ym^mXa@{|+O@R1auB@wcn&07?gxu4 z?~UNxPfb$SyeL#1`$aGq9E%hJ|KPR=AWyuehnr*W%(oSRf=i5 z1_y+_idOUZ7E{+i3L|;Crk!Kez3P?t{Ex4RfyWl!YRTf}DwLBfl6Y#`t%`x<>6 z)=0xD!Y<`6-ax&0h+nc-sccLE+YjmjQve8Cq=YwT$;plcwME`e^mW?&M>ifMIl1mc z1d+c7Sl_4te;hY3_3}zYI>GjD0teKKvYsLTW|*XwMP-lkFBY}F^FlXH$i(s%>|}z| zE&9UUqahE{BTM6u-+WB80)9=LA|PEJF1`qSI;v#)zPkZ}Q`i7rv$^MV4$DKl)C2D; z4aD0C!6iZ6uKk-xIf9(Wpt3P|Gan-so@@;ZifRn!;D@CMV$=W%oAE(yJ+S^%aEru-IS57YYTrls;Sf7EZp^;ln|RND_SjKF^|M~Pi7mT6k zIu0idqGPuv>}HBW;x1RO8RWmK73a3F@3DJBjT;KtPKOEaTZv07j9&t|P!C7sjq zS*vCk?+0tOaEz$+#aCaWiR?m=n+l>ycb6Cpj~ir6s1uW3LKvq9ikK+6Jd!x0w1UxY z-pkPzW<`p2qIeJ~mW?nliKKr~b_>rXjFMDj^Dfhbh)RyRpe-sbKIG9BkXPf}@S${} zaVK7n( zE_@|N;dE&7axErTo$7R7vSb*;Ozbj34XY*T*rmZhv66H-oT1EXgYPHh5vM|s($H(C zZZrvWHin4Rff&f@K@_sIA99=6i7%hh8L!(bf`voUd|y;(o{tYtP-yIhR1&;qypL=7 z5MU>CXmTgR=$X-HB-+AV ze}(TB4k3XF@mybB8k&-NFxiZX$zmAuY}WE+j99DMqP;;ELtE-auvu4VmW*zTOxpaS zK#Ef|*@ELak}aVYC9yYt0u#frz3#`v8;Dv_yfF+nxT+^Jaoy23(wH9Plm?#0%&!<- z7n#txMJKcvJ(E4iwMy^>?|*>FOf=nl*^7y_pith=MI{=)qFR~gvHC)pG>yT&bUxTI z*ji)~8;VY1GBuMexZ+g8Hs1aK6S%fiL?!iM;+)?X&KTwzT+~{)c<&I#P?s8Lr1Z=X z*XX&({4MAUOEHorbAmHQn8bo6C2=|4uAa~@Y$bJMBF44pf!Gy69K&^kvwBWfd;qL5 zUC4>$C4$jcky$(_q4#KelL1rZ5~Q>q4oU1`;leNlvyUTr3?)rXybLT%?6)+kCYIT1 zydMC~afxWag_7u+cn*v5CPowt?rLc}DiKErMGQSZ5aSJ%zF&^({OH8aOQ9&cH&*5I z^tOl5R}oR4m(aUv4eOIk(B%EGdF3}66i#6b^9+o7GM4oNQJ)=1_AD&{T)&nW>-QRB zLN_KWfi_`Sku|=-z9Lhch<0zgG0`TUnT(=M=xjY|h(XAAcmVU6ku5|TQEuZxEM)S^ZDPS$a_=s@wE=}n>?iR z53Q=?Gc)neJ>deXAW$gSGc}~yz%@1hHd_{duP*-G$@zEv-O2d(D)X7KhHkZRKdjj7`nF$+gfJNd`&&d#fJN+3;4v_^wuV1)M6`T z6!FjnR)8}!PagGf9jbdlN5=J#G|>?S!jAE#?bxQmmD)iKgM_M!G0<_gXItkgb(tdy z)D5l|Uhjk=CI8AtO^O5D{GCl8Wut1!+>+O~J>j!5IXG%FDWO%5Ym#v^*n9GU+Q`O1yO`G=|tpj6zbd$T@X=Qi30YeU4nTRP44P zHW#P~XKgLz;-nDbR1+>+f=?`35F8~B&(I}H=SuJlx?nE(5Mihar$no#315^b`w4^- zjdjBNeF&ZgGQGcqKV(0kfeetlkE=T5T?eps@)BQpU#6glqG|0d)l%qg`fvYr)4ek4 zy7h-;y*0u3yVv&0Bx{-#T~bA0!sPKJKFT*pKjPbu_{l*11Qj0qARH0v*=a}dR^%HX zW2Q4|9!M2XF zdFJ&6L97y4F9|APTPJ~@xdtrQ)(PH^VPaIm;+L@{Z0q!^7ZYm{KR7j3A0lAx=H@>;9*rQ-LfU%t~Z&BYV46D|G8SiRs;YFP- zd!C-K+Q)~+8p$7x+JZ+tLS71#TqL2~iVb}gkocFT6un0U7nFV&g!0wNg>mtRL7TG! z?O}zK${iz@A6AE_me?UjzaLhg<@pP1AS+fUZnehuQm}lglGuyGn6zZ(g|f({FOp?k zHRKn%CK^MCDk9`4&3s}f+k>;i>I4ucBv^ko;fqXG$wiCRi4)SXL1y8Rca*aAV?f+_ zBB%4JoirDv>Taf!PgtsNhmQY#f+8H09M-ik?4075I)Sx6 zj~6C>X|B6xNsbTscDv4>1kEaRn_4r?wv%x6@eVi!|5WWHl-&2^7UI}8j`!jV+j_ct zaJ`i}=i5D~%=t^!`K$9c*ZI5W{KI*x;O>Cd_8mB?H*K+;476z4j4N+Dx^V4SIZg-X z|N5TkHvC4agJYZ8TiSBnlNNV$oU*;s^gBVxMBd*NG-Mq&UoZVb)n)OvW>vUPd2Ul% zTO-nTGb`+C!IgjEpuh8P&-uOcYK8OPzP@`Ii^9-6g9KmO5&h$<;LcP!=JtlM!XP262_x2Z__CknW08p z?%38+-JV0lQZ2oJ`cALvlf+5YEv;Sna_P36=~M=<&TVRM@93%KOGm1k%y+x0H+OVZ zvuCar=~Ouu?f$FVyK~iMqNKWGv;UfGfmXP9sainm7q;W8N@bA4G1I_8t#MO>u>2_0 zHf8=IhgXB6n#gAOi*-a}TIt->5R4--Z*l73riLNmRQy%Ml1i6o0&b+lH7EAx>>KTy zshmdHx7fFmuy4cl1(tm~jpFad!|y|Bf0`zLuBJ8e=iPLV{CPF0&(Eg|7~>mDY1-5yHqq0Aog z?v)L{jDNFa5#b`UN-^C23jX#~6ZLys*-dp1({zmGz@@eI579wHy>!^x`d*s(7|niw8XlwhOZ*pRIJH&ILv#$ka_rhF z$9U(srA%yze1FAmYQ!IFduan&^wLT4Y0Hche%~yA-#Vl0VQNF4?K50F?2r$;XQXRt z>#E9X?x)5orz%zD0>t*+v@`UyD&0$G@22y(!wYNh_Idb!9sc-uFMV=1UCGa{<>x#7 z=Qs4y=XcXB{QM5t)0cPCT|8yB%~Q6OMuAcFVBf!Ks5p?uh$Co{IEw1TY&uLFP4mS( zS}Nw#da;07#UeUQ97pGh#dMiiLf4B%x>>BEyTodIiPQ1)3vnX7E;iDi#7F4wIIJc_ zi*Q7<$YN7xq}VKHvJ)auM^*Mc_Pw~eXDN-Azd1Zv!R+F<`|PhlT;|hr_Wky5%zZ1} zWB1y7(BfR$Wj|m)2)vikCux)Y5ajZDI?sOC{yLS>&2+l`4f_#@!d=uxr`nHF+I|e9 ztVT=K>o;|;kAnvHdY}C*ElKu$;EPg(Cjj6+``f;}&OtL4|DlxwYAWx2fWF3B01i*u zLl3f&S(2Gb{=0EYUXLOFL)E~1x=-TPou}w1U#%d-l5UD=w?>(wPDO#5pw0uB-@Ll_9AISbb5a&MnVHn4CMq9_n zA@~a_V+L_vxbYoE<6sbi@2ih#yffVR-nhp0GgKSXxGvoIskp}UbNYqf_&|TiY1Wor z`f0fRb4L4gFl_sK^re{2?+Q15!Dy_9ZGWGZ$24vXH~xKGWBM)q&X>kxG4X6YD{3l# z3BCRm2EaDwfm4K;NJ-yylVdt9Xy5>$_-S|tM-rbUB0R{?Z@c)P5O&Jwj(hz9$N;3V!QT7 zb|gx@q$FFG(O*UnC?i(e&uZ#0NIal7>F+UAcY^9)!&J)>ss1EN^vG3H;@^a^iD9m^{OR#fzgp?T5+`BiHrrL9KX^}R}V!QKeXwd{@-=VU+X^zarS-@~MFnlxt!$kY{#W76uF}xasVZSJb zsWBKX1%^)m!(|B=rr56)$1ugm@CP5m83=y(PP1yrq{cAAsd88~V|zti43O&q zWETyzZje9@Ry4F=Rtp6LbnVyeKT5k?ZNGuvY#Ke)m_{k;@M9cll=x7dpyXB-PuvV~n-t0Dq1v!H7k zh*-a-l=U0gt%`IieHl*S+C(;~A}^(|qYZuZFgvD)H_*eMO73Bi{g%(iCH@$OK{Mw_ z>i~_!c;>-X9GmwOY8dZhy+TGO!?Y?66Lami&0z$dVXjoNMfN}a{*L#()9^@t(Er7u z4s8z|4lt%`xbASc>JZe2+yAmEBTgw}33P4$%kTc*F~eOJ8t#g4@3Mhy)WiK>O!w=;-ERnYe-OGqIHCLX zHoM;<-LE&geVG`Z3 zB=A+){_sxnO~WXdhBKwGa^U)~ID1{~W8$2;J;GSL%edA4C`9HQn9y@2{J&zc zB?{3Ec4EC7qZ_Qz4WYq6H`GVB4inD28xi7N-D6_6kIcvjLfq1hV;~!$=X8WGj35Or z4eOgr!w=e7$AZyAd;FI#8Ah>UP7N!H3A?W7vJ(hT!T%5 z6qqqtgJ4C50zmlp%y1qS53j4Mt*>%yu}6F(FH*RE9K)CfRMTmoa{vu@4wC59B4n~= z(PWKovO)(99U<+FO~YxBGt#L7kU-qjlTmn5xQ2!j6pGtu9)mN+AH!CkksLKCW#DMj z*MrCMprsx-a{zj-!Adh~3iM!jL=X5$33`CN7yujBCorf$1lS?~JFahFAr)X?i7Jp+ z(D7{3ooe6eZSu{>7;r4V`mfPx5G?)Hs23jyLHfVemT#1xJuVBZr#$OHg5u}_I0kcEhVxEvs^0EkZ~f>2qAK0!?ML7a(= z7q$cwAQPGsGn|@m8X|&Z7m(ZlEASbKL|K3dS}-PvAPq4=ry(ZjG{lgS(hy+Pq!?Cx zM~6ZA`9cCO0`OJSyRVh%hNFc9t41g0N`PR3nTS3jTGh1eo|`7 zlk``nF`X&mP9MPi0KlPB0|4YhCj?AClmXMwx^IeScVUybwhqzMb9W$C=`*U@2i}OB zXMps3K>9q5b6%h+&M)Xd=a)3gd6ABGRGvUZR}C6{gO08moT*NYjIItgqAO&P-=Qgp zu0}*X3x`)znYWhX)cS_|U065Pg|)RZx*Z~308@Xliz;|i;}Q95s`j4R2gR>(E(ari z`F5IA`%UrME*gty9LD{1PTxIA9@2Nc;!nG%tjbX_@?SydEjF!=+;lt;VHP=Wk>k8g zWzK)7()llfu>a9m=Utiv1hv>8KQLv{%#=+FQw}Xo4b)mTlLk9=7%b1hTFr{Jeq4`d z%8Ah=I>@O*nGG<29RyO=yszuc7QYCL>M7%H71V*rj?MBP7Qa-Pc zoRhp-uXt4lX7!4H=Xv$NT@>ckeu`Js1-u%>ykh2}K>@qo%X@Iit`q`<)MzS8jit)e zI2xTAPh(RPz^;A3u8CmRB(Q5TShX)LOVt?c8mif~UbAbxX4iT@K$%2`Dt4L7*}r7w zOp}5%-Dl1QUrEbrYHR9xEzxUP`O(NVcgoBu1Z!?A(lxGf>*P zK$5mHK9c;lj7(oyWqJRuaIBV`QW-d7YtA_kB4%XZf>rW?x}Sp(^Ze5}*zf045C)dW zNv2ssJc)>`t{$;vg$~WEY@QXvS%gyCD4lAj0jUm5XeU*tIwT||;gj@~P4ahK(1$PK z130F%Uo4Pt{wy|NgBdeq8A%aam*DV}0!yKovf#BSxZ- zu}4U3GfHIas3KBv7a)EW5bp+K?*U`)HlP+tg-XJG2vRXqf}hn-@NrV{1i*hA;GYEe zrvU!RKEZ!rsW?)CKdMBj7!@ZKzXa+Rf%;bl+Cr&NtnRl|%$C@Wj$y10ISpGet%y|o z6%hXhh<~SHsegd6e>b3-QlWzJy|fhw)D2tFAi>Y+C-@ktC`(bgtc(VfxiqXSP1R*? zpWydGDj0m;R?L;)=lS5b8@3{r^Mz6&&2!l(pdJm>V}N=rRh5k~P@B>bu)GB6C}i+_ ziE%*;gLQywNXMjP=_s2BsFMJ7GNA4Y22VDin$l5j^M3JON=Ko=J4S*(wx8hRq@xbt z>j8d$fS(5N`}YZcFQlW;lPr|r7sW_NEa&5-;}D=e6sQja>cb%&hZ(3%=?GX}f^-xz z_&AAiafu8bUqm{N0@T@ndNiOmfWb!_Pz$AlD;ho&=~yDcFYPDzIO#YB;Ex6Pg#f<@ z;1~7@{sT+LG6{ZpiPAAXPCAwY^$MU~3Dk{{j+F-LLg`Q}@3(ZUkQi6SFgVV>O)VlF z>i~5U~KQdD(xSEExiH99p@$K&6DRy_7}z$azO{yb3M2r>D*f!Y+40CfpsQWzvONsOEN$>2ggRdRA0pxzFscL3@a z!QeX#sPPQm3sX}Vg*8j?Ek5{5{TQ9g0!;?jB8~cV5y|)}fZq+^_t4<7dudGBJqGY< zE#TFD!k4I8XHir(-pmv7XC-7&auWDvANZ-TN}K|!iUS@e6?=gA0U&-5h#vyGA2bl_ zlO1i+u8k!3#x@aJImo=*U; zHbYn{f<*cd=M<+62ntOc_GGawqB7@zxGe@^ur(5bxFHVWOMv(?Aie^KzXils0P%MT z5QA!~5+GvJL_=(kfvD=PkP$89;^H`n{{Y0d0P$@={3js34T%3rfGF$zc&7U1;#>n_ zhYxY5u{@7L>=hr0!}mYndk6U5g$BI`+xjjrzHi_&?dx0{C1b!hR^zKknq?DTr;qPc z1D`4sG+EdyRutls)dKDSO1lGTfIA2UIu!}HWZ__GxRz_aooY8LTw)e*xoEzY1La<8 z#FB@t(d+8=SYwxR(WbGP2@|@a7MfDuYgNxk;opgPec!6oJu@8s;|}s>r1&IXuZ7x& zM`x7DPs<*K_6^2K%_FQ@nn|;14t}QTK%9glIs&JI_@}CK+8-z7$Q_LlkEOxxI2z%O z$Np0_?e9*Y1KoY-Q2c%bK3j_4SGf}2kWUxl*vZBj*d}(`lL0 z<81eLaBv{=eE@J=aF;4wYd_aQg@kL>q9m14=2JYAAEe*M9+|B_k~K!= z*?SD^53_fDp1lV!dk>1RSK6Y*K8FvM96sFS@Zm){d;rY?&ZB4!&6gZLgjS%}S=1S%Kfzx`!K_o{Tz_ zHaVk5JEuE4C8v#zA9P+d*syBg&S(lC%yrI@GYq-yjuLBS^h-f-041d^b9kq)p>*ek;_SLYvY|Xw` zZZhA>OmMJ|_<%L;S8wUaFqp!?g|XMkw&_!sLEZ7VQ-*)+~XlW z>!`+E5AivHrnx6-QJF-pbGGwQU;qNmis@2O*@#Y;yU$$fK3%dWsOYn+j&-d$;o%Li zol~&e9BeyRS`B)bzX!K@*6ZsZ6VKuRGH;yUTII}032Y~)9<=Zst9Q`A87YjgD)oT1 zNRP1$2Z6`xF)HJ;h05Gk^4zUd;hsW6+%_8JcG6gP8^+sC`?(!Zl~bwC?ULg>7GhCB zS?3(*TyT0kW#ovN=kmJ*Y~nn63_B< z&&h_SJH(Hn;(75if7*E)p7}Am?lEf#tT)&ZSCuJwA_AUNIS*RPm{H|0;o#EBNAHC^ zmeDwx01nmRnE0XAa$g#h5jhi_IvZU2C^&QujdL%c3GR6`(ft@C;e2rDB09+ZI864% zbhvv79pzrCIW|%A>2Pe{pY421O6hFPvDvyVVYcKG%gAhpkMi@tjsV9l@HtjVsdvz| zwPX&nXrXH@cO!fXWCjEvK+c8EMcA0-YS4o)Ko-PI4a~*odadI_d%N!S60zF)5B7GM zz{Lm?nLq>ZFt!1b0L;t@F+^^bL?Wm8olA_@Pn1Pym1D#8mG`Ds>;cx*tmwsm~=Tf--PvBP`!YBP9%=3p(5e%XEF?uVetNV>n z7)NSx0yTX45X3)~#GlPEl)qt69-s#?z_}cCTDrLWatZs>&XvB1H-Qh$cN^Z@& z-%g->6^eDuQ@R73tDLLzeO;xu=&u2*uGM|+!kqAIk5a693g>{KExe*cb<4}BQP{@v zqY6}H?VtNBRQV?~+*OBzln5B5=AfxaEK%_0GWm|xvV(Bu!<^O!^eb}4ek%~j! za>eeTxZt`F^6PzW6-EA99P*ce{1qU7*&rU3RECP<+5H%fck~b=ab~VCo1=8%OGdSy}ZF8z)h!0+!s1G z`jn6H<$h2N0G}S{>{)rkC5v^_11ObN6;Dd&25G$-izxB9Se z*OWts_~ICb@0&pR4(E$`%6CZ0cRIm^2QwfhY)aWaT9@`(pMt*M)oWcDhJC0cu3SaH z5aHbEd^rZ8btwjZ9cYD#m?xDCk#H_Cj-&go;!fu)K4sHYfHGXg4KbvbNPID_f=Oe1 z>?-a8#fYo8)A_33ktrK;2%me5o{#D3c!SRYE5JbK62n!lh9o(9Lx4sR05 z;n=PY^zAC{_jq}UD8Y&fQ#!g{Zy)XJ1h1 zFO3w;XnK)hI(ghU9`7LNk$9E?4;%Xt!F3Zn{k6h`pzMTFxKqhZtB6qPgmKz|UNj65 zz3BIIpKqE^_WK!U_M?4@*_|4(>JCN6>9Y(rkJI`+j$RBo6@HTUZVW)3@ON5i3CO6>5B{`<291;))zuff}iAX!?3=fk?aPNUfjZ> zYRfy5Sz_H114LTt^i^QV)igML4UI})Z2;P9*6h)Mx_v+s!gDmlx&xYgXCkIA0MjiH z%v)(}`W6F|QRW?)t_j7a>j8~vhmUDe6w_Tpth)j0-b7em11uc9O7EuXv>DeKIun64 zsTiy~tp|OzF;4zkyR{U-NC42Dytz|S{0L;{QG+eUQCO?jc~Bc=t5+(`ov6cB%DKcJ z{II|aT9*pJhgV>krFAe>^J)0PXX1N_^M!X>*ZRFQ_`R^Z;tn`QFsLhcrSic_=?#-j zchWr?KmK6j^01yfGkTSl^daAj8qsT7m25{SJ6{j!_W(S}>$mfDtyQewcRJtjM}xJS zG-#-Mx4xlg219x@Y{k{&yoSm7gTXeV<~`2K-|0M}*_QXka&V8u_y{v-GuY)H`J2$5W9ubAR))Shy-vns9b-BOZ=DKK?if>eV_GAuk{02qk$a7jIydSnXMMORLJb0{T`oK$;4PW$fbxY33K#qPzn``ppct%DvC}?d>!aCvW%=9&cj5 zI-~3kn#mvh={73opMSZXGJ>B@=D+?P{58UFG$UP=#yxas`Zj~XpQu2^KfTs}s?zu1 z5&j%1|KyaJTUA!&a;h5{Zi`mZ1N3d==DtTirswceEd)0skwzI59%UBNkjxSqm03#T zGs|ed%yO#Ftfa#-jdWyYHO9=U<=-{MYvLj{}fe`8G0<4$@MSYQXz6B<^#WKf@c?-@&h(U`6eyO!k{ZR3ds{VehH~ zosJG=m5@#G4FdG-yEgLS95o6oxTU70Jq^q3qA{5pXkzBG5XaBaA(umk4tV1t@WvUTd&ZKXdmi4886K`xQNbBD6(#ek!py^#3|6Q1fc!SQV%!hGxF3OW zKcZ0v)kH+~N=NSPaoZXM7#Um9-Dp z=xBUCyp_w+%-fX8{1aS%Thda2oN+CO${Pi#JM4R+*kXY|IkX%Fr@AVvm)^3nhRb61APjtUhI0oU%8#Y5 z#82fb@wA$sDqo4eDzU$!T8UnJBKD1X?fq)+vuk?o`dyU8LCX4Gdw=Y)p*N)-^7L7D zFr~9Ys3JRz#%G7qwCo5vBs-Fh%#NbD*)g;-JD%2LtLdcd1lp2S8@ngKl#cOTl0ygT z-;UP5VLaLfZIvZ0%(AW0LhQjp-~^8) z!|_uw98V|nQ^j!nH3E0=njFWiy7qyZ7U#K1gyXN+z721TrC>6i@l8_eaPC$G|u7 z3FDzlan}o^0t-ss-4_>enE4b<#IKjBUq>RmB-SOd3C*<&Fbi>N$%91YGcqY>HVG$y-(_Q|fK{j#g+fNTzevYKXP*U`M} zdRmb^f!1YDgpiy-xoi`4W;fC4*%mqr?_GeO7iW)^ri+z*DFosAccgT^-WqxZqh<>lM)gs8k;D?)gCfX@MrX5spZe}Aysh> z5zg=qeFs~<;+)ENs2o2yV3a%Z!TY{k_&f5!(+Gdf5u@+PoM7$=Z*bHpE4IGtw~pavA^P)z%HM4}ZX(@u+b} zlC0UwewtF*D`C2>299fBzOJXy+0RNWs@gqp<{+zh#~nD&^U@YFHd0DhP>3Mjq0x|y zkoos-Re2r_huYKa1C*N67lD;M>=*{Aj~;WEH$HMr^+IUb2kf&70Z7|i4rf+w)2Q;4A#uiaX3mTDpQXg% zZf0J@2M|U{2*`L~>xeI9u4ur;GQaZ8-gH<978;qVI5(s-q>91RGOA1sF~s(i5EmkA z)gX2{zxKV>G=ShKO<_rKK{1N{9rI|sJ+|>hr8Pd)`Hj!hg27x|taUILU+p>Z)*!Yy z!Q|u#jqbHCEuE149uu-JcV3R+#V3o=(Y&y)bY6*Rd_^gZv;2KNeq-MF))RYGe!VQM ziI^`%NXc%Q{5lIv7!r<8;|nW9MV7x>s3bbG6X{@25XnL8Lilue3zz?s9U{(oz`pKl z;!4IOWObqxZ@K~c@EL@WH=s7`5BSV-UU&Y8pS+PPoHv|5hHt_YyzTtc`H%nG z|D5;WWc+4T7Thg;w9~P%eoP%ZUUz!a>;8dG@7f>G>3QD`A1YqJO!DOHdCqyy*L#-V{`=)u z0H^VV7flTPwMwP55?QkHmscv~NWrRE^LDuqF^W~&D%m%!nq4W!i&ky5T5JJ>TZRYC z4F2eZ zX{s~nOwOE8qe+A7+hzEdAAuWK3AeC{waYM9AvBEbXOBV(^PG?qvi zswuvs6A6{;_Q}}Kb-Ut;tTAmy;~7;q9gm`foO4jdAM z9Fda`%jgph9kNrS=Qyv(ILbM_jnK8^R6;e?ggUe4cRh9PG9)9+>D?)PlA@cT9#bWB zO*PDkoOxEwiF&*$;}~ZhSu5WLn^;;hmYPXNb)Gjj;eI1B2DwF-8l57)hN^4Pgf>S% z<7y^0%_*@ z@TM0hWQ<^x!ILjl%0-5q!BAq!x@JX6R(Ua!nqMmBYa>34;Vm!5WkfMSW4A$2%d5*2 z#5Jq5T1+iaSiw!!v68j2GP3D`QLEbJ#gWY?a0kNwqzn~thUQVbY}dx9Mw?wVEVa-q zPkvg4hBI_y%tCR&S}oO#npLCV*_@BG2^lj;QdE^{!7f`R23Ihoal5pPbI>VSbJ<$C zOngm(hnr;i;j=W8Tb(%FBl!H8%1x`U{;K zVelE1)oQ*Nw|SSkw|eIc@GCbyM3Xf}pCxpRck>qzKu9kSf%K{nNUsEewDtwkiWf+` zTOe&_fwYAM(xw$iOH?2&N`bTi1=5ZaNSjL_ttWbO2KW^eNLLC__V9f~GF=svU{jRK zB=r*VKVKcg4{-7+PTeJmp-kV+LZ=WviVB(pf0&S4_yR2a2&bQdaemV?{44ZCc38NI zDoHE!@i1Jy!>M$U;S$a`x=Ga)?(cbsSa{!kOoiRy2RM8EK2krC#&I0rEH*$}H-c6+ zh)y;Hen=PT`FBku%zv#?$}VwSn+w+z;C=e666v~dc7vk2i4W+T=N=*Cxp=}qW9kP% zSWlY`ixZqQJdG0=K16a09(57Wvu*-<*hA1##{mKwl3s$=I*t&?bp#38>gXqEuVa9~ zU&oMfmm+(1gd}{7Pn@WjMp5&>e;!jz0mJ2bh|E2>gmm8RNM0db@HmoBNV#UWV73Wq z&g)2ukSqg%g!rD~b6oWb(NbC+?GYi) zE3zX7g_u{`9I;=B1*P4w9S~ws@jKd~M_9OrVLs4KS>o71zYn7wL+HUY{V${ABnpUA z!!tCWd3;0n=6fpIV|;}_@GbtrkN6i)7{l+Z6MwQG{)R#`BBD;q(6i)v;_P literal 0 HcmV?d00001 diff --git a/components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/ser/ValueSerializerModifier.class b/components/camel-salesforce/camel-salesforce-component/tools/jackson/databind/ser/ValueSerializerModifier.class new file mode 100644 index 0000000000000000000000000000000000000000..f5d40899905886938eea78b682837577833f4da0 GIT binary patch literal 6662 zcmdUz%~Kpj7{;I8UD&WfBnc)a#uzk2ARm(;el9^_NfcO;R1vYP@-n;Ifg!`p*34|G z@Z!ab7cXAC_%~<{mQ^0Sc=MElWm#%zdGOz`e0uhSWuU`O7$Q)$J3~*uZ~yvzpMIye zfBN_P9{^m#tsGKFXOZbe7rF)dSIzsTVVlmfajUc{%Yi`mgymSlq(FLjWGRb70%L*e z+P<-BmhbtlV^qw*ELl#)@TF%gnRZPsO3yNF>tpFHxE1TJCA}zJlxcf$0RH%P!)oKOvAQxD}c`U9=o|v$j@}-krLmqeZt& zKPJ7=aicL4tXRIlcriY7o^0h6#zNlq+^X~fOVZOP!#Y>3X$71I>F-+0d0pRWX*x5~ zFMC#1^**;)t5$6WDqjqPR0}NIC|Z7yABi?FBjwPyz(t++?MMU;l^TNzT-8}>xdaX? z^Y%#eZ$&%4IR)$0W*Vj;ES%k$R|)Mzo_qj!U6YMg_F=TkS6BA{Oa7F{&2T zw_4B5=$X4JXPV@1!=e?+Hhl%2si%0#^UO_o{w0z51gu;}==%=u9;1qPHtjfa=((?6 ztqMorWnGFR+yZ|bq;M!j##6zmx(W)eZF9527im+psucd7+}t+?*f)C6zWhTCM1Yfe zJ8tJ&r$y~nLT9keI*+G@Gf_1Zt$S^oQGvhqLJ?|^eWQviy5L4K*Mb)K=RgJ}eyuoG zSI2@`Z7&i(CpUX~-ZwfJdZZ4TqyoPkoax8U_=#4=qlMttM5o0O!L4eGl(qD;CPh5&nY~GUS9in(v`yD@Sf*#Z0Toi4YxFya2Vs{Z z{8o>Fi#W<}Wy}sZh5=srD+$Mu4vjzJe;Kx=E`7uAG&U?JLd((m(}txQ{sf*4y`^xH zU@2vb=Wv>~&-1=Ml4?1_mKWI4m!=8W8Egd3@{__KUA))<#Qa`Eyo7VaQDL0h6p2(@ zBtDD*F@*D5=RHLC{B?$5K2k&JgT5MLs1b}tfaJd1o%>UH! zY5HU)n)**eit+m6R_awA>#0vub64n42}X$^9o{LPOq&SOP&}DX1V=KV2n=>qLfBxs zN{TVOvNO|X9Wae2!}KbdUc>7A3l3}_=rb)cLGt-wH yFujuu(-fJeQP`R3s}7iEl3}_|rW>6wJ$RB#DZI;-n8JIQ{zyALHF@O{J zG=T`(Vu)&J#|D9}S^bWlHFaw`J25pYORm6%BX9YH%8y_xQJ~Q%OzEBXDDEzDDb8&Pc8AF$b6uJe@uh+Vdwh8&j)e!Q+x{)up zol6jQuZquRf$o8V7omCAFtbJJ=F*cfY!yf?&AzEuXZR+8E$CBP+XSKm=hBl2?7+?# zc4>GXy9G8cX$;$@$xs`%Rb{yKayf6B0z=`YmPB$ld<3B!$)&F+m>0bX^kZ)fFKT!R z`vi`xlV5?DVU^7JvJ^Nl(2B`gQeANjCY1*xjZ6%K8iuf6Al(8%qpm;?bJkDEe6{vY zpd648_O=O8$#!J+Jk$TIw4|fEwv%g;sBeo}*6WJvVcT-$Jr%(OvUoX$S2P^Ns{*?l zQ7^a8aF=vzV$N^_poV1NxIGz$G+xtiSUJBf;Imh)!0-(YaaPHKy}qLon>N-+RmKrP8w9S zovN2BesOJh@$^~Kk8>K%j- zo085Yeahracfl^{=A_O|#OGi#>dqKU&7-XlwdxZ&=G#(4R8`8gc5f|Xx4iZnb*K@XoaNYAt>@%QGRQ$f@?a*XX?H1V5NZLZBMqGcR=~l6mPSEX0#=hmVD>~e;$xX8s_JgZ#VO3|sN0@rIVY9sJbsm9is~lNDSzxf0My;|0 zOK}%SzlKff=DfGrn$Kw@;D1tzYxGR=+)=S-Z2>VY@IsTj%exvq=wSHo7-i|Oj5W#E z+fy-U(+xdTU{lfMA#_Zy1eGV@$5owaVqjV9St6|dM&O5*L2rt}YKZ>35>K~m?-U;N z4uRo+0fay=i|7&`elH^ZiK0F4lq5?%Q*7sIXZHh2lSlP&S#`&x>HsV|+Bu7dpJ7w4 zR@GT#b1h0u=lgEIjrbAp$JoPDV*~;Pevl*)Ro@|e8s}4%cfosm=2wWHIf!6_SM?g$ ziHp2yz5w3B+k9g2#syxL@(}MzE|U34T|=7vAp=LKA<4&TDk1M~SzE3?C1HisLG-@%?rFdwp`0R{uR#^1~b25`xUk7V8g1N6a`Kpfjqi! z+FN~#uZ;Jh^Id|`xQZ#luHo=!N}LIByic(>$}4%(5k+d z=jqD@dRbV%mr;Jw$bjX;BtWqoiT4vj!-VMh@)!f`l-GPF^(6QGxyPp53wB|k%*6R0H5F(KJ)M$ z@|O$tB^QS2;ZvhISoBhjY*f4i&XL<0()j^r+tJpW>Vd;yls;6wEKNnJ4{CxsptN#t zxbB|o6&xUy8C=AP2iO>RmtO+y=g{Z;!2NFCstz&*pF|p}gG|*yra~ZD2D+9* zRIE2b9L0PP&>1=!<@=<9$NpuMN*!R*gPjsonschema-generator 4.38.0 - + + tools.jackson.core + jackson-databind + diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java index 6fd6ad800ce41..221c8f6ab3c6b 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/CamelSalesforceMojoOutputTest.java @@ -29,7 +29,6 @@ import java.util.stream.Collectors; import java.util.stream.StreamSupport; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.apache.camel.component.salesforce.codegen.GenerateExecution; @@ -47,6 +46,7 @@ import org.mockito.stubbing.Answer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import tools.jackson.databind.ObjectMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; diff --git a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/SchemaMojoManualIT.java b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/SchemaMojoManualIT.java index 83882dadbcf81..756aaaf899e45 100644 --- a/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/SchemaMojoManualIT.java +++ b/components/camel-salesforce/camel-salesforce-maven-plugin/src/test/java/org/apache/camel/maven/SchemaMojoManualIT.java @@ -19,12 +19,12 @@ import java.io.File; import java.nio.file.Path; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.module.jsonSchema.jakarta.JsonSchema; -import tools.jackson.module.jsonSchema.jakarta.types.ObjectSchema; import org.apache.camel.component.salesforce.api.utils.JsonUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.module.jsonSchema.jakarta.JsonSchema; +import tools.jackson.module.jsonSchema.jakarta.types.ObjectSchema; import static org.apache.camel.maven.AbstractSalesforceMojoTest.setup; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/components/camel-servlet/pom.xml b/components/camel-servlet/pom.xml index 0b3b6d3a47174..fa7454369b842 100644 --- a/components/camel-servlet/pom.xml +++ b/components/camel-servlet/pom.xml @@ -88,7 +88,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test @@ -118,5 +118,11 @@ ${commons-io-version} test + + org.skyscreamer + jsonassert + ${jsonassert-version} + test + diff --git a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletNoContentRestConfigTest.java b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletNoContentRestConfigTest.java index 78723c7147596..db20a23795b49 100644 --- a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletNoContentRestConfigTest.java +++ b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletNoContentRestConfigTest.java @@ -21,6 +21,7 @@ import org.apache.camel.converter.jaxb.JaxbConstants; import org.apache.camel.model.rest.RestBindingMode; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -80,8 +81,8 @@ public void testJson200ConfigNoContentEnabled() throws Exception { WebResponse response = query(req, false); assertEquals(200, response.getResponseCode()); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", - response.getText()); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", + response.getText(), false); } @Test diff --git a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletNoContentTest.java b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletNoContentTest.java index 65ee18339a894..82f333671d5c3 100644 --- a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletNoContentTest.java +++ b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletNoContentTest.java @@ -21,6 +21,7 @@ import org.apache.camel.converter.jaxb.JaxbConstants; import org.apache.camel.model.rest.RestBindingMode; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -80,7 +81,7 @@ public void testJson200ConfigNoContentEnabled() throws Exception { WebResponse response = query(req, false); assertEquals(200, response.getResponseCode()); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", response.getText()); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", response.getText(), false); } @Test diff --git a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletPojoInOutTest.java b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletPojoInOutTest.java index 169e7b2fb79fc..01ce8abdefb6f 100644 --- a/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletPojoInOutTest.java +++ b/components/camel-servlet/src/test/java/org/apache/camel/component/servlet/rest/RestServletPojoInOutTest.java @@ -22,6 +22,7 @@ import org.apache.camel.component.servlet.ServletCamelRouterTestSupport; import org.apache.camel.model.rest.RestBindingMode; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -41,7 +42,7 @@ public void testServletPojoInOut() throws Exception { String out = response.getText(); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); } @Test @@ -55,7 +56,7 @@ public void testServletPojoGet() throws Exception { String out = response.getText(); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); } @Override diff --git a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/pom.xml b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/pom.xml index 337f491c9a24d..749f583b40c86 100644 --- a/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/pom.xml +++ b/components/camel-spring-parent/camel-spring-ai/camel-spring-ai-tools/pom.xml @@ -39,6 +39,12 @@ camel-support + + tools.jackson.core + jackson-databind + ${jackson-version} + + org.springframework.ai diff --git a/components/camel-spring-parent/camel-spring-ai/pom.xml b/components/camel-spring-parent/camel-spring-ai/pom.xml index 21b2d6eb5a938..8577f3fbb42be 100644 --- a/components/camel-spring-parent/camel-spring-ai/pom.xml +++ b/components/camel-spring-parent/camel-spring-ai/pom.xml @@ -35,6 +35,7 @@ true + true diff --git a/components/camel-telemetry-dev/pom.xml b/components/camel-telemetry-dev/pom.xml index 98ca225216284..973482a6ce5b1 100644 --- a/components/camel-telemetry-dev/pom.xml +++ b/components/camel-telemetry-dev/pom.xml @@ -46,7 +46,7 @@ tools.jackson.core jackson-databind - ${jackson-version} + ${jackson3-version} org.apache.camel diff --git a/components/camel-undertow/pom.xml b/components/camel-undertow/pom.xml index b92cbfe34c183..0d6cb2d9e27fc 100644 --- a/components/camel-undertow/pom.xml +++ b/components/camel-undertow/pom.xml @@ -91,7 +91,7 @@ org.apache.camel - camel-jackson + camel-jackson3 test @@ -128,6 +128,12 @@ test + + org.skyscreamer + jsonassert + ${jsonassert-version} + test + org.junit.jupiter junit-jupiter diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoInOutTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoInOutTest.java index 5ce4705618975..8f36b0b0067c5 100644 --- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoInOutTest.java +++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoInOutTest.java @@ -19,7 +19,9 @@ import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.undertow.BaseUndertowTest; import org.apache.camel.model.rest.RestBindingMode; +import org.json.JSONException; import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -27,20 +29,21 @@ public class RestUndertowHttpPojoInOutTest extends BaseUndertowTest { @Test - public void testUndertowPojoInOut() { + public void testUndertowPojoInOut() throws JSONException { String body = "{\"id\": 123, \"name\": \"Donald Duck\"}"; String out = template.requestBody("undertow:http://localhost:{{port}}/users/lives", body, String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); } @Test - public void testUndertowGetRequest() { + public void testUndertowGetRequest() throws JSONException { String out = template.requestBody("undertow:http://localhost:{{port}}/users/lives", null, String.class); assertNotNull(out); - assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out); + JSONAssert.assertEquals("{\"iso\":\"EN\",\"country\":\"England\"}", out, false); } @Override diff --git a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoTypeTest.java b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoTypeTest.java index b67ea806c101b..0a32bc58da3e3 100644 --- a/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoTypeTest.java +++ b/components/camel-undertow/src/test/java/org/apache/camel/component/undertow/rest/RestUndertowHttpPojoTypeTest.java @@ -30,13 +30,15 @@ import org.apache.camel.model.rest.VerbDefinition; import org.junit.jupiter.api.Test; import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; public class RestUndertowHttpPojoTypeTest extends BaseUndertowTest { - private final ObjectMapper mapper = new ObjectMapper(); + private final ObjectMapper mapper = JsonMapper.builder() + .build(); @Test public void testUndertowPojoTypeValidateModel() { @@ -101,29 +103,6 @@ public void testUndertowPojoTypePutUser() { assertEquals(200, outExchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE)); } - @Test - public void testUndertowPojoTypePutUserFail() throws Exception { - MockEndpoint mock = getMockEndpoint("mock:putUser"); - mock.expectedMessageCount(0); - - Exchange outExchange = template.request("undertow:http://localhost:{{port}}/users/1", exchange -> { - exchange.getIn().setHeader(Exchange.HTTP_METHOD, "PUT"); - exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/json"); - - CountryPojo country = new CountryPojo(); - country.setIso("US"); - country.setCountry("United States"); - - String body = mapper.writeValueAsString(country); - exchange.getIn().setBody(body); - }); - - assertNotNull(outExchange); - assertEquals(400, outExchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE)); - - MockEndpoint.assertIsSatisfied(context); - } - @Test public void testUndertowPojoTypePutUsers() throws Exception { UserPojo user1 = new UserPojo(); diff --git a/core/camel-support/pom.xml b/core/camel-support/pom.xml index 9480c6c1b48bf..dfa357e9ea0c0 100644 --- a/core/camel-support/pom.xml +++ b/core/camel-support/pom.xml @@ -65,6 +65,13 @@ slf4j-api + + org.skyscreamer + jsonassert + ${jsonassert-version} + test + + org.junit.jupiter diff --git a/coverage/pom.xml b/coverage/pom.xml index 236c085e6bdfa..59dcee3807273 100644 --- a/coverage/pom.xml +++ b/coverage/pom.xml @@ -1204,22 +1204,22 @@ org.apache.camel - camel-jackson + camel-jackson3 ${project.version} org.apache.camel - camel-jackson-avro + camel-jackson3-avro ${project.version} org.apache.camel - camel-jackson-protobuf + camel-jackson3-protobuf ${project.version} org.apache.camel - camel-jacksonxml + camel-jackson3xml ${project.version} diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SalesforceComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SalesforceComponentBuilderFactory.java index 577be92a6df60..9285f04693fa4 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SalesforceComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SalesforceComponentBuilderFactory.java @@ -567,15 +567,14 @@ default SalesforceComponentBuilder notifyForOperationUpdate(java.lang.Boolean no * Salesforce objects. * * The option is a: - * <code>com.fasterxml.jackson.databind.ObjectMapper</code> - * type. + * <code>tools.jackson.databind.ObjectMapper</code> type. * * Group: common * * @param objectMapper the value to set * @return the dsl builder */ - default SalesforceComponentBuilder objectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) { + default SalesforceComponentBuilder objectMapper(tools.jackson.databind.ObjectMapper objectMapper) { doSetProperty("objectMapper", objectMapper); return this; } @@ -1957,7 +1956,7 @@ protected boolean setPropertyOnComponent( case "notifyForOperations": getOrCreateConfiguration((SalesforceComponent) component).setNotifyForOperations((org.apache.camel.component.salesforce.internal.dto.NotifyForOperationsEnum) value); return true; case "notifyForOperationUndelete": getOrCreateConfiguration((SalesforceComponent) component).setNotifyForOperationUndelete((java.lang.Boolean) value); return true; case "notifyForOperationUpdate": getOrCreateConfiguration((SalesforceComponent) component).setNotifyForOperationUpdate((java.lang.Boolean) value); return true; - case "objectMapper": getOrCreateConfiguration((SalesforceComponent) component).setObjectMapper((com.fasterxml.jackson.databind.ObjectMapper) value); return true; + case "objectMapper": getOrCreateConfiguration((SalesforceComponent) component).setObjectMapper((tools.jackson.databind.ObjectMapper) value); return true; case "packages": ((SalesforceComponent) component).setPackages((java.lang.String) value); return true; case "pkChunking": getOrCreateConfiguration((SalesforceComponent) component).setPkChunking((java.lang.Boolean) value); return true; case "pkChunkingChunkSize": getOrCreateConfiguration((SalesforceComponent) component).setPkChunkingChunkSize((java.lang.Integer) value); return true; diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ServicenowComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ServicenowComponentBuilderFactory.java index 74ddd654df46f..4e9a88648b765 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ServicenowComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/ServicenowComponentBuilderFactory.java @@ -629,15 +629,14 @@ default ServicenowComponentBuilder instanceName(java.lang.String instanceName) { * Sets Jackson's ObjectMapper to use for request/reply. * * The option is a: - * <code>com.fasterxml.jackson.databind.ObjectMapper</code> - * type. + * <code>tools.jackson.databind.ObjectMapper</code> type. * * Group: advanced * * @param mapper the value to set * @return the dsl builder */ - default ServicenowComponentBuilder mapper(com.fasterxml.jackson.databind.ObjectMapper mapper) { + default ServicenowComponentBuilder mapper(tools.jackson.databind.ObjectMapper mapper) { doSetProperty("mapper", mapper); return this; } @@ -930,7 +929,7 @@ protected boolean setPropertyOnComponent( case "dateTimeFormat": getOrCreateConfiguration((ServiceNowComponent) component).setDateTimeFormat((java.lang.String) value); return true; case "httpClientPolicy": getOrCreateConfiguration((ServiceNowComponent) component).setHttpClientPolicy((org.apache.cxf.transports.http.configuration.HTTPClientPolicy) value); return true; case "instanceName": ((ServiceNowComponent) component).setInstanceName((java.lang.String) value); return true; - case "mapper": getOrCreateConfiguration((ServiceNowComponent) component).setMapper((com.fasterxml.jackson.databind.ObjectMapper) value); return true; + case "mapper": getOrCreateConfiguration((ServiceNowComponent) component).setMapper((tools.jackson.databind.ObjectMapper) value); return true; case "proxyAuthorizationPolicy": getOrCreateConfiguration((ServiceNowComponent) component).setProxyAuthorizationPolicy((org.apache.cxf.configuration.security.ProxyAuthorizationPolicy) value); return true; case "retrieveTargetRecordOnImport": getOrCreateConfiguration((ServiceNowComponent) component).setRetrieveTargetRecordOnImport((java.lang.Boolean) value); return true; case "timeFormat": getOrCreateConfiguration((ServiceNowComponent) component).setTimeFormat((java.lang.String) value); return true; diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JsonValidatorEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JsonValidatorEndpointBuilderFactory.java index ec1c88d5be624..9b2b9a82a86c9 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JsonValidatorEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JsonValidatorEndpointBuilderFactory.java @@ -309,15 +309,15 @@ default AdvancedJsonValidatorEndpointBuilder errorHandler(String errorHandler) { /** * The used Jackson object mapper. * - * The option is a: - * com.fasterxml.jackson.databind.ObjectMapper type. + * The option is a: tools.jackson.databind.ObjectMapper + * type. * * Group: advanced * * @param objectMapper the value to set * @return the dsl builder */ - default AdvancedJsonValidatorEndpointBuilder objectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) { + default AdvancedJsonValidatorEndpointBuilder objectMapper(tools.jackson.databind.ObjectMapper objectMapper) { doSetProperty("objectMapper", objectMapper); return this; } @@ -325,7 +325,7 @@ default AdvancedJsonValidatorEndpointBuilder objectMapper(com.fasterxml.jackson. * The used Jackson object mapper. * * The option will be converted to a - * com.fasterxml.jackson.databind.ObjectMapper type. + * tools.jackson.databind.ObjectMapper type. * * Group: advanced * diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SalesforceEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SalesforceEndpointBuilderFactory.java index a02b2584d73f7..15af5bdc2ba1f 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SalesforceEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SalesforceEndpointBuilderFactory.java @@ -752,15 +752,15 @@ default SalesforceEndpointConsumerBuilder notifyForOperationUpdate(String notify * Custom Jackson ObjectMapper to use when serializing/deserializing * Salesforce objects. * - * The option is a: - * com.fasterxml.jackson.databind.ObjectMapper type. + * The option is a: tools.jackson.databind.ObjectMapper + * type. * * Group: common * * @param objectMapper the value to set * @return the dsl builder */ - default SalesforceEndpointConsumerBuilder objectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) { + default SalesforceEndpointConsumerBuilder objectMapper(tools.jackson.databind.ObjectMapper objectMapper) { doSetProperty("objectMapper", objectMapper); return this; } @@ -769,7 +769,7 @@ default SalesforceEndpointConsumerBuilder objectMapper(com.fasterxml.jackson.dat * Salesforce objects. * * The option will be converted to a - * com.fasterxml.jackson.databind.ObjectMapper type. + * tools.jackson.databind.ObjectMapper type. * * Group: common * @@ -2342,15 +2342,15 @@ default SalesforceEndpointProducerBuilder notifyForOperationUpdate(String notify * Custom Jackson ObjectMapper to use when serializing/deserializing * Salesforce objects. * - * The option is a: - * com.fasterxml.jackson.databind.ObjectMapper type. + * The option is a: tools.jackson.databind.ObjectMapper + * type. * * Group: common * * @param objectMapper the value to set * @return the dsl builder */ - default SalesforceEndpointProducerBuilder objectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) { + default SalesforceEndpointProducerBuilder objectMapper(tools.jackson.databind.ObjectMapper objectMapper) { doSetProperty("objectMapper", objectMapper); return this; } @@ -2359,7 +2359,7 @@ default SalesforceEndpointProducerBuilder objectMapper(com.fasterxml.jackson.dat * Salesforce objects. * * The option will be converted to a - * com.fasterxml.jackson.databind.ObjectMapper type. + * tools.jackson.databind.ObjectMapper type. * * Group: common * @@ -3731,15 +3731,15 @@ default SalesforceEndpointBuilder notifyForOperationUpdate(String notifyForOpera * Custom Jackson ObjectMapper to use when serializing/deserializing * Salesforce objects. * - * The option is a: - * com.fasterxml.jackson.databind.ObjectMapper type. + * The option is a: tools.jackson.databind.ObjectMapper + * type. * * Group: common * * @param objectMapper the value to set * @return the dsl builder */ - default SalesforceEndpointBuilder objectMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper) { + default SalesforceEndpointBuilder objectMapper(tools.jackson.databind.ObjectMapper objectMapper) { doSetProperty("objectMapper", objectMapper); return this; } @@ -3748,7 +3748,7 @@ default SalesforceEndpointBuilder objectMapper(com.fasterxml.jackson.databind.Ob * Salesforce objects. * * The option will be converted to a - * com.fasterxml.jackson.databind.ObjectMapper type. + * tools.jackson.databind.ObjectMapper type. * * Group: common * diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServiceNowEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServiceNowEndpointBuilderFactory.java index 4437b589ed05d..4664910aa3b9b 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServiceNowEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/ServiceNowEndpointBuilderFactory.java @@ -1087,15 +1087,15 @@ default AdvancedServiceNowEndpointBuilder httpClientPolicy(String httpClientPoli /** * Sets Jackson's ObjectMapper to use for request/reply. * - * The option is a: - * com.fasterxml.jackson.databind.ObjectMapper type. + * The option is a: tools.jackson.databind.ObjectMapper + * type. * * Group: advanced * * @param mapper the value to set * @return the dsl builder */ - default AdvancedServiceNowEndpointBuilder mapper(com.fasterxml.jackson.databind.ObjectMapper mapper) { + default AdvancedServiceNowEndpointBuilder mapper(tools.jackson.databind.ObjectMapper mapper) { doSetProperty("mapper", mapper); return this; } @@ -1103,7 +1103,7 @@ default AdvancedServiceNowEndpointBuilder mapper(com.fasterxml.jackson.databind. * Sets Jackson's ObjectMapper to use for request/reply. * * The option will be converted to a - * com.fasterxml.jackson.databind.ObjectMapper type. + * tools.jackson.databind.ObjectMapper type. * * Group: advanced * diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java index 5785b9e588886..08eb64557d257 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java @@ -35,10 +35,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; -import tools.jackson.core.type.TypeReference; -import tools.jackson.databind.MapperFeature; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.SerializationFeature; import com.github.freva.asciitable.AsciiTable; import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; @@ -54,10 +50,19 @@ import org.apache.camel.util.json.DeserializationException; import org.apache.camel.util.json.Jsoner; import picocli.CommandLine; +import tools.jackson.core.type.TypeReference; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; public abstract class InfraBaseCommand extends CamelCommand { - protected final ObjectMapper jsonMapper = new ObjectMapper(); + protected final ObjectMapper jsonMapper = JsonMapper.builder() + .disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) + .enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY) + .enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS) + .build(); @CommandLine.Option(names = { "--json" }, description = "Output in JSON Format") @@ -65,11 +70,6 @@ public abstract class InfraBaseCommand extends CamelCommand { public InfraBaseCommand(CamelJBangMain main) { super(main); - - jsonMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); - jsonMapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true); - jsonMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); - jsonMapper.configure(MapperFeature.REQUIRE_HANDLERS_FOR_JAVA8_OPTIONALS, false); } protected static Map findPids(String name) throws Exception { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java index c72735506da46..0cb732f84893a 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GistHelper.java @@ -23,9 +23,9 @@ import java.time.Duration; import java.util.StringJoiner; +import org.apache.camel.util.FileUtil; import tools.jackson.databind.JsonNode; import tools.jackson.databind.ObjectMapper; -import org.apache.camel.util.FileUtil; public final class GistHelper { @@ -91,25 +91,25 @@ private static void resolveGistAsRawFiles( ObjectMapper mapper = new ObjectMapper(); JsonNode root = mapper.readTree(res.body()); for (JsonNode c : root.get("files")) { - String name = c.get("filename").asText(); + String name = c.get("filename").textValue(); String ext = FileUtil.onlyExt(name, false); if (kamelets != null && "kamelet.yaml".equalsIgnoreCase(ext)) { - String rawUrl = c.get("raw_url").asText(); + String rawUrl = c.get("raw_url").textValue(); String u = asGistSingleUrl(rawUrl); kamelets.add(u); } else if (properties != null && "properties".equalsIgnoreCase(ext)) { - String rawUrl = c.get("raw_url").asText(); + String rawUrl = c.get("raw_url").textValue(); String u = asGistSingleUrl(rawUrl); properties.add(u); } else if (routes != null) { if ("java".equalsIgnoreCase(ext) || "xml".equalsIgnoreCase(ext) || "yaml".equalsIgnoreCase(ext) || "camel.yaml".equalsIgnoreCase(ext)) { - String rawUrl = c.get("raw_url").asText(); + String rawUrl = c.get("raw_url").textValue(); String u = asGistSingleUrl(rawUrl); routes.add(u); } } else if (all != null) { - String rawUrl = c.get("raw_url").asText(); + String rawUrl = c.get("raw_url").textValue(); String u = asGistSingleUrl(rawUrl); all.add(u); } diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java index f8b1aa4e096ca..166ff79150bf9 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/GitHubHelper.java @@ -23,10 +23,10 @@ import java.time.Duration; import java.util.StringJoiner; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import org.apache.camel.util.AntPathMatcher; import org.apache.camel.util.FileUtil; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; public final class GitHubHelper { @@ -112,27 +112,27 @@ private static void resolveGithubAsRawFiles( ObjectMapper mapper = new ObjectMapper(); JsonNode root = mapper.readTree(res.body()); for (JsonNode c : root) { - String name = c.get("name").asText(); + String name = c.get("name").textValue(); String ext = FileUtil.onlyExt(name, false); boolean match = wildcard == null || AntPathMatcher.INSTANCE.match(wildcard, name, false); if (match) { if (kamelets != null && "kamelet.yaml".equalsIgnoreCase(ext)) { - String htmlUrl = c.get("html_url").asText(); + String htmlUrl = c.get("html_url").textValue(); String u = asGithubSingleUrl(htmlUrl); kamelets.add(u); } else if (properties != null && "properties".equalsIgnoreCase(ext)) { - String htmlUrl = c.get("html_url").asText(); + String htmlUrl = c.get("html_url").textValue(); String u = asGithubSingleUrl(htmlUrl); properties.add(u); } else if (routes != null) { if ("java".equalsIgnoreCase(ext) || "xml".equalsIgnoreCase(ext) || "yaml".equalsIgnoreCase(ext) || "camel.yaml".equalsIgnoreCase(ext)) { - String htmlUrl = c.get("html_url").asText(); + String htmlUrl = c.get("html_url").textValue(); String u = asGithubSingleUrl(htmlUrl); routes.add(u); } } else if (all != null) { - String htmlUrl = c.get("html_url").asText(); + String htmlUrl = c.get("html_url").textValue(); String u = asGithubSingleUrl(htmlUrl); all.add(u); } diff --git a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/TransformTools.java b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/TransformTools.java index cc24017392cc5..b6891bcb09696 100644 --- a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/TransformTools.java +++ b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/TransformTools.java @@ -28,7 +28,7 @@ import jakarta.enterprise.context.ApplicationScoped; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; import io.quarkiverse.mcp.server.Tool; import io.quarkiverse.mcp.server.ToolArg; import io.quarkiverse.mcp.server.ToolCallException; @@ -275,7 +275,7 @@ public YamlDslValidationResult camel_validate_yaml_dsl( File tempFile = File.createTempFile("camel-validate-", ".yaml"); try { Files.writeString(tempFile.toPath(), route); - List messages = yamlValidator.validate(tempFile); + List messages = yamlValidator.validate(tempFile); List errors = null; if (!messages.isEmpty()) { @@ -283,7 +283,7 @@ public YamlDslValidationResult camel_validate_yaml_dsl( .map(m -> new YamlDslError( m.getMessage(), m.getInstanceLocation() != null ? m.getInstanceLocation().toString() : null, - m.getType(), + m.getKeyword(), m.getSchemaLocation() != null ? m.getSchemaLocation().toString() : null)) .toList(); } diff --git a/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeSchemaGenerator.java b/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeSchemaGenerator.java index d22b316bf7b60..99150f09453a0 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeSchemaGenerator.java +++ b/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeSchemaGenerator.java @@ -20,8 +20,6 @@ import java.nio.file.Paths; import java.util.List; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import com.github.victools.jsonschema.generator.Option; import com.github.victools.jsonschema.generator.SchemaGenerator; import com.github.victools.jsonschema.generator.SchemaGeneratorConfig; @@ -35,6 +33,8 @@ import org.apache.camel.main.download.MavenDependencyDownloader; import org.apache.camel.tooling.maven.MavenArtifact; import picocli.CommandLine; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; /** * Command to generate JSON Schema for Camel components and Java objects. diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml index 360e162d3dbba..54e2e70336859 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/pom.xml @@ -47,6 +47,12 @@ camel-jbang-core + + + tools.jackson.core + jackson-databind + + io.fabric8 diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java index efeb2ce435db2..e818163c86c5e 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/KubernetesHelper.java @@ -28,12 +28,6 @@ import java.util.Optional; import com.fasterxml.jackson.annotation.JsonInclude; -import tools.jackson.core.JsonParser; -import tools.jackson.databind.DeserializationFeature; -import tools.jackson.databind.MapperFeature; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.SerializationFeature; -import tools.jackson.databind.json.JsonMapper; import io.fabric8.kubernetes.api.model.APIGroup; import io.fabric8.kubernetes.api.model.ConfigMap; import io.fabric8.kubernetes.api.model.ConfigMapBuilder; @@ -46,6 +40,10 @@ import org.apache.camel.util.FileUtil; import org.apache.camel.util.StringHelper; import org.yaml.snakeyaml.Yaml; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.json.JsonMapper; /** * Helper class provides access to cached Kubernetes client. Also provides access to generic Json and Yaml mappers. @@ -62,15 +60,10 @@ public final class KubernetesHelper { static { OBJECT_MAPPER = JsonMapper.builder() .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) - .enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING) .enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY) - .enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING) - .disable(JsonParser.Feature.AUTO_CLOSE_SOURCE) - .enable(MapperFeature.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES) .enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES) - .build() - .setDefaultPropertyInclusion( - JsonInclude.Value.construct(JsonInclude.Include.NON_EMPTY, JsonInclude.Include.NON_EMPTY)); + .changeDefaultPropertyInclusion(inclusion -> inclusion.withValueInclusion(JsonInclude.Include.NON_EMPTY)) + .build(); } private KubernetesHelper() { diff --git a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java index 6f1f9ef644bd9..f6504018ffbd3 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java +++ b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/traits/knative/KnativeTrait.java @@ -29,7 +29,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import tools.jackson.core.JsonProcessingException; import io.fabric8.knative.duck.v1.DestinationBuilder; import io.fabric8.knative.duck.v1.KReference; import io.fabric8.knative.duck.v1.KReferenceBuilder; @@ -48,6 +47,7 @@ import org.apache.camel.dsl.jbang.core.commands.kubernetes.traits.model.Traits; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.URISupport; +import tools.jackson.core.JacksonException; public class KnativeTrait extends KnativeBaseTrait { @@ -140,7 +140,7 @@ public void apply(Traits traitConfig, TraitContext context) { } camelTrait.getProperties().add("camel.component.knative.environmentPath=classpath:knative.json"); traitConfig.setCamel(camelTrait); - } catch (JsonProcessingException e) { + } catch (JacksonException e) { context.printer().printf("Failed to write knative.json environment configuration - %s%n", e.getMessage()); } } diff --git a/dsl/camel-jbang/camel-jbang-plugin-validate/src/main/java/org/apache/camel/dsl/jbang/core/commands/validate/YamlValidateCommand.java b/dsl/camel-jbang/camel-jbang-plugin-validate/src/main/java/org/apache/camel/dsl/jbang/core/commands/validate/YamlValidateCommand.java index 84436f06e96d0..3d72ed72876ce 100644 --- a/dsl/camel-jbang/camel-jbang-plugin-validate/src/main/java/org/apache/camel/dsl/jbang/core/commands/validate/YamlValidateCommand.java +++ b/dsl/camel-jbang/camel-jbang-plugin-validate/src/main/java/org/apache/camel/dsl/jbang/core/commands/validate/YamlValidateCommand.java @@ -25,7 +25,7 @@ import java.util.Map; import java.util.Stack; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; import org.apache.camel.dsl.jbang.core.commands.CamelCommand; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; import org.apache.camel.dsl.yaml.validator.YamlValidator; @@ -53,7 +53,7 @@ public Integer doCall() throws Exception { YamlValidator validator = new YamlValidator(); validator.init(); - Map> reports = new LinkedHashMap<>(); + Map> reports = new LinkedHashMap<>(); for (String n : files) { if (matchFile(n)) { var report = validator.validate(new File(n)); @@ -100,9 +100,9 @@ private static boolean matchFile(String name) { return "yml".equals(ext) || "yaml".equals(ext); } - private static int errorCounts(Map> reports) { + private static int errorCounts(Map> reports) { int count = 0; - for (List list : reports.values()) { + for (List list : reports.values()) { if (!list.isEmpty()) { count++; } diff --git a/dsl/camel-kamelet-main/pom.xml b/dsl/camel-kamelet-main/pom.xml index 9044192f95eb5..b3fb641859ee9 100644 --- a/dsl/camel-kamelet-main/pom.xml +++ b/dsl/camel-kamelet-main/pom.xml @@ -82,7 +82,7 @@ org.apache.camel - camel-jackson + camel-jackson3 org.apache.camel diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java index dcaecdd1202c4..48012d2cdfc1c 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java @@ -35,8 +35,6 @@ import javax.annotation.processing.Generated; import javax.lang.model.element.Modifier; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.ObjectMapper; import com.squareup.javapoet.AnnotationSpec; import com.squareup.javapoet.ClassName; import com.squareup.javapoet.CodeBlock; @@ -66,6 +64,8 @@ import org.jboss.jandex.Type; import org.snakeyaml.engine.v2.api.ConstructNode; import org.snakeyaml.engine.v2.nodes.Node; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.ObjectMapper; @Mojo( name = "generate-yaml-deserializers", diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java index 897e4194066c2..34d5eb5ec0cf5 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java @@ -35,13 +35,6 @@ import java.util.stream.Stream; import java.util.stream.StreamSupport; -import tools.jackson.databind.JsonNode; -import tools.jackson.databind.MapperFeature; -import tools.jackson.databind.ObjectMapper; -import tools.jackson.databind.SerializationFeature; -import tools.jackson.databind.json.JsonMapper; -import tools.jackson.databind.node.ArrayNode; -import tools.jackson.databind.node.ObjectNode; import org.apache.camel.maven.dsl.yaml.support.ToolingSupport; import org.apache.camel.tooling.util.FileUtil; import org.apache.camel.tooling.util.Strings; @@ -57,6 +50,13 @@ import org.jboss.jandex.AnnotationValue; import org.jboss.jandex.ClassInfo; import org.jboss.jandex.DotName; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.MapperFeature; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; +import tools.jackson.databind.node.ArrayNode; +import tools.jackson.databind.node.ObjectNode; @Mojo( name = "generate-yaml-schema", @@ -374,7 +374,8 @@ private void kebabToCamelCase(JsonNode node) { private void kebabToCamelCaseProperties(ObjectNode props, ArrayNode required) { Map rebuild = new LinkedHashMap<>(); // the properties are in mixed kebab-case and camelCase - for (Iterator it = props.fieldNames(); it.hasNext();) { + for (Iterator it = props.propertyNames().iterator(); + it.hasNext();) { String n = it.next(); String t = StringHelper.dashToCamelCase(n); JsonNode prop = props.get(n); diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/YamlProperties.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/YamlProperties.java index fb1062a629c3d..219145a1d2c42 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/YamlProperties.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/support/YamlProperties.java @@ -16,9 +16,9 @@ */ package org.apache.camel.maven.dsl.yaml.support; -import tools.jackson.databind.JsonNode; import com.squareup.javapoet.AnnotationSpec; import org.apache.camel.tooling.util.Strings; +import tools.jackson.databind.JsonNode; import static org.apache.camel.maven.dsl.yaml.GenerateYamlSupportMojo.CN_YAML_PROPERTY; diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator-maven-plugin/src/main/java/org/apache/camel/dsl/yaml/validator/ValidateMojo.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator-maven-plugin/src/main/java/org/apache/camel/dsl/yaml/validator/ValidateMojo.java index 56da16719c1ef..a8dc751afba76 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator-maven-plugin/src/main/java/org/apache/camel/dsl/yaml/validator/ValidateMojo.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator-maven-plugin/src/main/java/org/apache/camel/dsl/yaml/validator/ValidateMojo.java @@ -27,7 +27,7 @@ import javax.inject.Inject; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; import org.apache.camel.support.PatternHelper; import org.apache.camel.util.FileUtil; import org.apache.maven.execution.MavenSession; @@ -124,7 +124,7 @@ public void execute() throws MojoExecutionException { findYamlRouters(yamlFiles, includeTest, ext, project); getLog().debug("Found " + yamlFiles.size() + " YAML files ..."); - Map> reports = new LinkedHashMap<>(); + Map> reports = new LinkedHashMap<>(); List matched = new ArrayList<>(); for (File file : yamlFiles) { if (matchFile(file)) { @@ -147,7 +147,7 @@ public void execute() throws MojoExecutionException { validateResults(reports); } - private void validateResults(Map> reports) throws MojoExecutionException { + private void validateResults(Map> reports) throws MojoExecutionException { int count = errorCounts(reports); if (count == 0) { getLog().info("Validation success (files:" + reports.size() + ")"); @@ -174,9 +174,9 @@ private void validateResults(Map> reports) throws } } - private int errorCounts(Map> reports) { + private int errorCounts(Map> reports) { int count = 0; - for (List list : reports.values()) { + for (List list : reports.values()) { if (!list.isEmpty()) { count++; } @@ -184,7 +184,7 @@ private int errorCounts(Map> reports) { return count; } - private List validateYamlRoute(File file) throws Exception { + private List validateYamlRoute(File file) throws Exception { getLog().debug("Validating YAML DSL in file: " + file); return validator.validate(file); } diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/CamelYamlParser.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/CamelYamlParser.java index b8444f4b30bd3..9a10e2edb451e 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/CamelYamlParser.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/CamelYamlParser.java @@ -21,7 +21,7 @@ import java.util.Collections; import java.util.List; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; import org.apache.camel.CamelContext; import org.apache.camel.TypeConverterExists; import org.apache.camel.component.properties.PropertiesComponent; @@ -49,7 +49,7 @@ */ public class CamelYamlParser { - public List parse(File file) throws Exception { + public List parse(File file) throws Exception { CamelContext camelContext = null; try { DefaultRegistry registry = new DefaultRegistry(); @@ -98,9 +98,11 @@ public List parse(File file) throws Exception { return Collections.emptyList(); } } catch (Exception e) { - ValidationMessage vm = ValidationMessage.builder().type("parser") - .messageSupplier(() -> e.getClass().getName() + ": " + e.getMessage()).build(); - return List.of(vm); + Error error = Error.builder() + .keyword("parser") + .messageSupplier(() -> e.getClass().getName() + ": " + e.getMessage()) + .build(); + return List.of(error); } finally { if (camelContext != null) { camelContext.stop(); diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/YamlParser.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/YamlParser.java index ccf1ca30ec2a3..b975da2e0fb70 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/YamlParser.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/YamlParser.java @@ -20,9 +20,9 @@ import java.util.Collections; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.dataformat.yaml.YAMLMapper; /** * YAML DSL parser that tooling can use to parse Camel source files to check if they can be YAML parsed. @@ -32,16 +32,18 @@ */ public class YamlParser { - private final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); + private final ObjectMapper mapper = YAMLMapper.builder().build(); - public List parse(File file) throws Exception { + public List parse(File file) throws Exception { try { mapper.readTree(file); return Collections.emptyList(); } catch (Exception e) { - ValidationMessage vm = ValidationMessage.builder().type("parser") - .messageSupplier(() -> e.getClass().getName() + ": " + e.getMessage()).build(); - return List.of(vm); + Error error = Error.builder() + .keyword("parser") + .messageSupplier(() -> e.getClass().getName() + ": " + e.getMessage()) + .build(); + return List.of(error); } } diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/YamlValidator.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/YamlValidator.java index 39b3d7a13e336..de979206a65dc 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/YamlValidator.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/main/java/org/apache/camel/dsl/yaml/validator/YamlValidator.java @@ -21,15 +21,14 @@ import java.util.List; import java.util.Locale; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import com.networknt.schema.JsonMetaSchema; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.JsonSchemaFactory; -import com.networknt.schema.NonValidationKeyword; -import com.networknt.schema.SchemaValidatorsConfig; -import com.networknt.schema.SpecVersionDetector; -import com.networknt.schema.ValidationMessage; +import com.networknt.schema.Error; +import com.networknt.schema.Schema; +import com.networknt.schema.SchemaLocation; +import com.networknt.schema.SchemaRegistry; +import com.networknt.schema.SchemaRegistryConfig; +import com.networknt.schema.SpecificationVersion; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.dataformat.yaml.YAMLMapper; /** * YAML DSL validator that tooling can use to validate Camel source files if they can be parsed and are valid according @@ -40,10 +39,10 @@ public class YamlValidator { private static final String DRAFT = "http://json-schema.org/draft-04/schema#"; private static final String LOCATION = "/schema/camelYamlDsl.json"; - private final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - private JsonSchema schema; + private final ObjectMapper mapper = YAMLMapper.builder().build(); + private Schema schema; - public List validate(File file) throws Exception { + public List validate(File file) throws Exception { if (schema == null) { init(); } @@ -51,20 +50,34 @@ public List validate(File file) throws Exception { var target = mapper.readTree(file); return new ArrayList<>(schema.validate(target)); } catch (Exception e) { - ValidationMessage vm = ValidationMessage.builder().type("parser") - .messageSupplier(() -> e.getClass().getName() + ": " + e.getMessage()).build(); - return List.of(vm); + Error error = Error.builder() + .keyword("parser") + .messageSupplier(() -> e.getClass().getName() + ": " + e.getMessage()) + .build(); + return List.of(error); } } public void init() throws Exception { var model = mapper.readTree(YamlValidator.class.getResourceAsStream(LOCATION)); - var factory = JsonSchemaFactory.getInstance(SpecVersionDetector.detect(model)); - var config = SchemaValidatorsConfig.builder().locale(Locale.ENGLISH).build(); - // include deprecated as an unknown keyword so the validator does not WARN log about this - JsonMetaSchema jms = factory.getMetaSchema(DRAFT, null); - jms.getKeywords().put("deprecated", new NonValidationKeyword("deprecated")); - schema = factory.getSchema(model, config); + + // Detect version from $schema field if present + SpecificationVersion version = SpecificationVersion.DRAFT_4; + if (model.has("$schema")) { + String dialectId = model.get("$schema").asString(); + version = SpecificationVersion.fromDialectId(dialectId).orElse(SpecificationVersion.DRAFT_4); + } + + // Create schema registry with config + SchemaRegistryConfig config = SchemaRegistryConfig.builder() + .locale(Locale.ENGLISH) + .build(); + + SchemaRegistry registry = SchemaRegistry.withDefaultDialect(version, builder -> builder + .schemaRegistryConfig(config)); + + SchemaLocation location = SchemaLocation.of("classpath:" + LOCATION); + schema = registry.getSchema(location, model); } } diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml b/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml index 9a7082ac99a26..0540622915d52 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/pom.xml @@ -182,12 +182,12 @@ org.apache.camel - camel-jackson + camel-jackson3 test org.apache.camel - camel-jacksonxml + camel-jackson3xml test diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy index 1ee336cb30975..4e7bf8544adbc 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/support/YamlTestSupport.groovy @@ -17,10 +17,12 @@ package org.apache.camel.dsl.yaml.support import tools.jackson.databind.ObjectMapper -import tools.jackson.dataformat.yaml.YAMLFactory -import com.networknt.schema.JsonSchemaFactory -import com.networknt.schema.SchemaValidatorsConfig -import com.networknt.schema.SpecVersionDetector +import tools.jackson.dataformat.yaml.YAMLMapper +import com.networknt.schema.Schema +import com.networknt.schema.SchemaLocation +import com.networknt.schema.SchemaRegistry +import com.networknt.schema.SchemaRegistryConfig +import com.networknt.schema.SpecificationVersion import groovy.util.logging.Slf4j import org.apache.camel.CamelContext import org.apache.camel.FluentProducerTemplate @@ -40,15 +42,23 @@ import java.nio.charset.StandardCharsets @Slf4j class YamlTestSupport extends Specification implements HasCamelContext { - static def MAPPER = new ObjectMapper(new YAMLFactory()) + static def MAPPER = YAMLMapper.builder().build() static def SCHEMA_NODE = MAPPER.readTree(ResourceHelper.getResourceAsStream('/schema/camelYamlDsl.json')) - static def FACTORY = JsonSchemaFactory.getInstance(SpecVersionDetector.detect(SCHEMA_NODE)) - static def SCHEMA_VALIDATORS_CONFIG = { - SchemaValidatorsConfig config = new SchemaValidatorsConfig() - config.setLocale(Locale.ENGLISH) - return config + static def VERSION = { + SpecificationVersion version = SpecificationVersion.DRAFT_4 + if (SCHEMA_NODE.has('$schema')) { + String dialectId = SCHEMA_NODE.get('$schema').asString() + version = SpecificationVersion.fromDialectId(dialectId).orElse(SpecificationVersion.DRAFT_4) + } + return version }() - static def SCHEMA = FACTORY.getSchema(SCHEMA_NODE, SCHEMA_VALIDATORS_CONFIG) + static def SCHEMA_REGISTRY_CONFIG = SchemaRegistryConfig.builder() + .locale(Locale.ENGLISH) + .build() + static def REGISTRY = SchemaRegistry.withDefaultDialect(VERSION, { builder -> + builder.schemaRegistryConfig(SCHEMA_REGISTRY_CONFIG) + }) + static def SCHEMA = REGISTRY.getSchema(SchemaLocation.of('classpath:/schema/camelYamlDsl.json'), SCHEMA_NODE) @AutoCleanup def context = new DefaultCamelContext() diff --git a/parent/pom.xml b/parent/pom.xml index a365f461e5f5c..8fbbc261ab40e 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -270,10 +270,11 @@ 3.0.5 2.5.3 0.2.9 - 1.6.0 + 2.0.0-alpha1 2.20.2 2.20 3.0.3 + 3.1.0 3.0.0-rc2 2.22.3 0.15 @@ -336,7 +337,7 @@ 3.0.1 2.27.7 1.1.4 - 4.38.0 + 5.0.0 1.5.3 3.0.0 1.13 @@ -425,8 +426,9 @@ 6.0.2 4.2.10.Final 2.0.5 - 1.5.9 + 3.0.0 10.8 + 3.4.4 2.0.13 5.0.0 3.4.10 @@ -3281,14 +3283,14 @@ tools.jackson jackson-bom - ${jackson-version} + ${jackson3-version} import pom com.fasterxml.jackson.core jackson-annotations - ${jackson-annotations-version} + ${jackson2-annotations-version}