<commit_before>= Apache Camel 3.x Upgrade Guide

This document is for helping you upgrade your Apache Camel application
from Camel 3.x to 3.y. For example if you are upgrading Camel 3.0 to 3.2, then you should follow the guides
from both 3.0 to 3.1 and 3.1 to 3.2.

== Upgrading Camel 3.5 to 3.6

=== Simple language

The simple language have been optimized to handle numeric and boolean values more naturally.
We have also optimized for unneeded type conversions in predicates such as comparing left and right hand side in operators
with their given type as-is, or the least amount of conversion when possible.

The `contains` and `not contains` operator now handles numerics naturally. For example `${header.numbers} contains '123,456'`
would return `false` if the numbers header has the value `-123`, as the operator now compares numerically. Previously it
would compare with String based values.

=== API components upgrade

The `camel-braintree`, `camel-twilio` and `camel-zendesk` has updated to newer versions and regenerated their API
signatures in the Camel components which changed a few existing API methods and adding new API methods as well.

=== API components overhauled

The following API component has been overhauled, by having a new Java source parser to inspect API and fully generate
Camel endpoint configuration and documentation gathered from javadoc.

The components affected are:

- camel-as2
- camel-box
- camel-braintree
- camel-fhir
- camel-google-calendar
- camel-google-drive
- camel-google-email
- camel-google-sheets
- camel-olingo2
- camel-olingo4
- camel-twilio
- camel-zendesk

=== Languages

All the out of the box supported languages (simple, bean, groovy, jsonpath, xpath etc.) have been optmized to be _singleton_
which improves performance for concurrent processing that uses those languages that would be resolved on each use.
Now the languages is resolved once during startup or first usage.

=== Customizers

Customizers, which are objects used to configure some of the Camel services such as component, language and data formats, that were previously limited to Camel Spring Boot, are now consistently used across runtimes.
To make that possible, the interfaces have been changed and they do not use generics anymore.

Impacted interfaces:

* org.apache.camel.spi.ComponentCustomizer
* org.apache.camel.spi.LanguageCustomizer
* org.apache.camel.spi.DataFormatCustomizer<commit_msg>Fix a typo in the 3.6 upgrade guide.<commit_after>= Apache Camel 3.x Upgrade Guide

This document is for helping you upgrade your Apache Camel application
from Camel 3.x to 3.y. For example if you are upgrading Camel 3.0 to 3.2, then you should follow the guides
from both 3.0 to 3.1 and 3.1 to 3.2.

== Upgrading Camel 3.5 to 3.6

=== Simple language

The simple language have been optimized to handle numeric and boolean values more naturally.
We have also optimized for unneeded type conversions in predicates such as comparing left and right hand side in operators
with their given type as-is, or the least amount of conversion when possible.

The `contains` and `not contains` operator now handles numerics naturally. For example `${header.numbers} contains '123,456'`
would return `false` if the numbers header has the value `-123`, as the operator now compares numerically. Previously it
would compare with String based values.

=== API components upgrade

The `camel-braintree`, `camel-twilio` and `camel-zendesk` has updated to newer versions and regenerated their API
signatures in the Camel components which changed a few existing API methods and adding new API methods as well.

=== API components overhauled

The following API component has been overhauled, by having a new Java source parser to inspect API and fully generate
Camel endpoint configuration and documentation gathered from javadoc.

The components affected are:

- camel-as2
- camel-box
- camel-braintree
- camel-fhir
- camel-google-calendar
- camel-google-drive
- camel-google-email
- camel-google-sheets
- camel-olingo2
- camel-olingo4
- camel-twilio
- camel-zendesk

=== Languages

All the out of the box supported languages (simple, bean, groovy, jsonpath, xpath etc.) have been optmized to be _singleton_
which improves performance for concurrent processing that uses those languages that would be resolved on each use.
Now the languages are resolved once during startup or first usage.

=== Customizers

Customizers, which are objects used to configure some of the Camel services such as component, language and data formats, that were previously limited to Camel Spring Boot, are now consistently used across runtimes.
To make that possible, the interfaces have been changed and they do not use generics anymore.

Impacted interfaces:

* org.apache.camel.spi.ComponentCustomizer
* org.apache.camel.spi.LanguageCustomizer
* org.apache.camel.spi.DataFormatCustomizer
{'fraction_non_alphanumeric': 0.055806319244973326, 'fraction_numerical': 0.013130898645876077, 'mean_word_length': 4.5272108843537415, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3872764', 'n_tokens_mistral': 1354, 'n_tokens_neox': 1250, 'n_words': 662}