davsclaus commented on code in PR #26937:
URL: https://github.com/apache/camel/pull/26937#discussion_r4130735928
##########
core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java:
##########
@@ -100,11 +100,13 @@ public class JsonDataFormat extends DataFormatDefinition
implements ContentTypeH
private String moduleRefs;
@XmlAttribute
@Metadata(label = "advanced",
- description = "Set of features to enable on the Jackson
com.fasterxml.jackson.databind.ObjectMapper. Multiple features can be separated
by comma.")
+ description = "Set of features to enable on the Jackson
com.fasterxml.jackson.databind.ObjectMapper. Multiple features can be separated
by comma."
+ + " Jackson 3 features can be declared in
qualified manner (ClassName.FEATURE) for multiple identical feature names.")
Review Comment:
Wording suggestion: "When using Jackson 3, a feature can be qualified with
its enum class name (e.g. SerializationFeature.WRAP_ROOT_VALUE) to tell apart
features with the same name." (same at line 109)
##########
components/camel-jackson3/src/main/java/org/apache/camel/component/jackson3/AbstractJacksonDataFormat.java:
##########
@@ -737,64 +737,179 @@ private boolean resolveObjectMapper() {
return objectMapperFoundRegistry;
}
- private void doEnableFeaures() {
+ private boolean trySetSerializationFeature(String featureValueName,
boolean state) {
+ SerializationFeature feature
+ =
getCamelContext().getTypeConverter().tryConvertTo(SerializationFeature.class,
featureValueName);
+ if (feature == null) {
+ return false;
+ }
+ setObjectMapper(objectMapper.rebuild().configure(feature,
state).build());
+ return true;
+ }
+
+ private boolean trySetDeserializationFeature(String featureValueName,
boolean state) {
+ DeserializationFeature feature
+ =
getCamelContext().getTypeConverter().tryConvertTo(DeserializationFeature.class,
featureValueName);
+ if (feature == null) {
+ return false;
+ }
+ setObjectMapper(objectMapper.rebuild().configure(feature,
state).build());
+ return true;
+ }
+
+ private boolean trySetMapperFeature(String featureValueName, boolean
state) {
+ MapperFeature feature =
getCamelContext().getTypeConverter().tryConvertTo(MapperFeature.class,
featureValueName);
+ if (feature == null) {
+ return false;
+ }
+ setObjectMapper(objectMapper.rebuild().configure(feature,
state).build());
+ return true;
+ }
+
+ private boolean trySetDateTimeFeature(String featureValueName, boolean
state) {
+ DateTimeFeature feature =
getCamelContext().getTypeConverter().tryConvertTo(DateTimeFeature.class,
featureValueName);
+ if (feature == null) {
+ return false;
+ }
+ setObjectMapper(objectMapper.rebuild().configure(feature,
state).build());
+ return true;
+ }
+
+ private boolean trySetEnumFeature(String featureValueName, boolean state) {
+ EnumFeature feature =
getCamelContext().getTypeConverter().tryConvertTo(EnumFeature.class,
featureValueName);
+ if (feature == null) {
+ return false;
+ }
+ setObjectMapper(objectMapper.rebuild().configure(feature,
state).build());
+ return true;
+ }
+
+ private boolean trySetJsonNodeFeature(String featureValueName, boolean
state) {
+ JsonNodeFeature feature =
getCamelContext().getTypeConverter().tryConvertTo(JsonNodeFeature.class,
featureValueName);
+ if (feature == null) {
+ return false;
+ }
+ setObjectMapper(objectMapper.rebuild().configure(feature,
state).build());
+ return true;
+ }
+
+ private boolean trySetStreamReadFeature(String featureValueName, boolean
state) {
+ StreamReadFeature feature
+ =
getCamelContext().getTypeConverter().tryConvertTo(StreamReadFeature.class,
featureValueName);
+ if (feature == null) {
+ return false;
+ }
+ setObjectMapper(objectMapper.rebuild().configure(feature,
state).build());
+ return true;
+ }
+
+ private boolean trySetStreamWriteFeature(String featureValueName, boolean
state) {
+ StreamWriteFeature feature
+ =
getCamelContext().getTypeConverter().tryConvertTo(StreamWriteFeature.class,
featureValueName);
+ if (feature == null) {
+ return false;
+ }
+ setObjectMapper(objectMapper.rebuild().configure(feature,
state).build());
+ return true;
+ }
+
+ private void doEnableFeatures() {
Iterator<?> it = ObjectHelper.createIterator(enableFeatures);
while (it.hasNext()) {
String enable = it.next().toString();
- // it can be different kind
- SerializationFeature sf
- =
getCamelContext().getTypeConverter().tryConvertTo(SerializationFeature.class,
enable);
- if (sf != null) {
- ObjectMapper om = objectMapper.rebuild().enable(sf).build();
- setObjectMapper(om);
- continue;
- }
- DeserializationFeature df
- =
getCamelContext().getTypeConverter().tryConvertTo(DeserializationFeature.class,
enable);
- if (df != null) {
- ObjectMapper om = objectMapper.rebuild().enable(df).build();
- setObjectMapper(om);
- continue;
- }
- MapperFeature mf =
getCamelContext().getTypeConverter().tryConvertTo(MapperFeature.class, enable);
- if (mf != null) {
- ObjectMapper om = objectMapper.rebuild().enable(mf).build();
- setObjectMapper(om);
- continue;
- }
- DateTimeFeature dtf =
getCamelContext().getTypeConverter().tryConvertTo(DateTimeFeature.class,
enable);
- if (dtf != null) {
- ObjectMapper om = objectMapper.rebuild().enable(dtf).build();
- setObjectMapper(om);
- continue;
- }
- EnumFeature ef =
getCamelContext().getTypeConverter().tryConvertTo(EnumFeature.class, enable);
- if (ef != null) {
- ObjectMapper om = objectMapper.rebuild().enable(ef).build();
- setObjectMapper(om);
- continue;
+ long dotCount = enable.chars().filter(ch -> ch == '.').count();
+ if (dotCount > 1)
Review Comment:
Please add braces here (and at line 871), like the `if (feature == null)`
fix.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]