You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2018/12/24 11:39:55 UTC

[camel-k] branch master updated (5140057 -> 94305dd)

This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git.


    from 5140057  chore(client): add a reset command
     new a0b0881  Moving camel environment to API
     new 40e9ab5  Moving Knative env serialization to API
     new 9b0ad02  Add flows to types
     new 38dce53  Add option to provide initial configuration to Knative
     new d522efb  Force setting the default port if missing
     new 94305dd  Adding JSON auto-conversion option

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 cmd/camel-k/main.go                                |  2 +-
 cmd/kamel/main.go                                  |  2 +-
 .../camel/v1alpha1}/knative/register.go            |  0
 pkg/{util => apis/camel/v1alpha1}/knative/types.go |  0
 pkg/apis/camel/v1alpha1/knative/types_support.go   | 94 ++++++++++++++++++++++
 pkg/apis/camel/v1alpha1/types.go                   |  3 +
 pkg/apis/camel/v1alpha1/types_support.go           | 10 +++
 pkg/trait/knative.go                               | 58 +++++++------
 .../camel/component/knative/KnativeComponent.java  | 10 +++
 .../knative/KnativeConversionProcessor.java        | 28 +++++++
 .../camel/component/knative/KnativeEndpoint.java   | 20 +++--
 11 files changed, 192 insertions(+), 35 deletions(-)
 rename pkg/{util => apis/camel/v1alpha1}/knative/register.go (100%)
 rename pkg/{util => apis/camel/v1alpha1}/knative/types.go (100%)
 create mode 100644 pkg/apis/camel/v1alpha1/knative/types_support.go
 create mode 100644 runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConversionProcessor.java


[camel-k] 05/06: Force setting the default port if missing

Posted by lb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit d522efbcee0eca97bafa8c5709f1e012a8bbb4f1
Author: nferraro <ni...@gmail.com>
AuthorDate: Mon Dec 24 10:42:27 2018 +0100

    Force setting the default port if missing
---
 pkg/apis/camel/v1alpha1/knative/types_support.go | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/pkg/apis/camel/v1alpha1/knative/types_support.go b/pkg/apis/camel/v1alpha1/knative/types_support.go
index 97c6fe7..25f9ac9 100644
--- a/pkg/apis/camel/v1alpha1/knative/types_support.go
+++ b/pkg/apis/camel/v1alpha1/knative/types_support.go
@@ -29,12 +29,13 @@ func BuildCamelServiceDefinition(name string, serviceType CamelServiceType, rawu
 	if err != nil {
 		return nil, err
 	}
+	protocol := CamelProtocol(serviceURL.Scheme)
 	definition := CamelServiceDefinition{
 		Name:        name,
 		Host:        serviceURL.Host,
-		Port:        -1,
+		Port:        defaultCamelProtocolPort(protocol),
 		ServiceType: serviceType,
-		Protocol:    CamelProtocol(serviceURL.Scheme),
+		Protocol:    protocol,
 		Metadata:    make(map[string]string),
 	}
 	portStr := serviceURL.Port()
@@ -54,6 +55,17 @@ func BuildCamelServiceDefinition(name string, serviceType CamelServiceType, rawu
 	return &definition, nil
 }
 
+func defaultCamelProtocolPort(prot CamelProtocol) int {
+	switch prot {
+	case CamelProtocolHTTP:
+		return 80
+	case CamelProtocolHTTPS:
+		return 443
+	default:
+		return -1
+	}
+}
+
 // Serialize serializes a CamelEnvironment
 func (env *CamelEnvironment) Serialize() (string, error) {
 	res, err := json.Marshal(env)


[camel-k] 01/06: Moving camel environment to API

Posted by lb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit a0b0881d6660e30251121d2aab1adf6a525f8727
Author: nferraro <ni...@gmail.com>
AuthorDate: Fri Dec 21 17:02:26 2018 +0100

    Moving camel environment to API
---
 cmd/camel-k/main.go                                |  2 +-
 cmd/kamel/main.go                                  |  2 +-
 .../camel/v1alpha1}/knative/register.go            |  0
 pkg/{util => apis/camel/v1alpha1}/knative/types.go |  0
 pkg/apis/camel/v1alpha1/knative/types_support.go   | 54 ++++++++++++++++++++++
 pkg/trait/knative.go                               | 29 ++++++------
 6 files changed, 71 insertions(+), 16 deletions(-)

diff --git a/cmd/camel-k/main.go b/cmd/camel-k/main.go
index e5d71f3..67da2fe 100644
--- a/cmd/camel-k/main.go
+++ b/cmd/camel-k/main.go
@@ -28,7 +28,7 @@ import (
 	"github.com/operator-framework/operator-sdk/pkg/util/k8sutil"
 	sdkVersion "github.com/operator-framework/operator-sdk/version"
 
-	_ "github.com/apache/camel-k/pkg/util/knative"
+	_ "github.com/apache/camel-k/pkg/apis/camel/v1alpha1/knative"
 	_ "github.com/apache/camel-k/pkg/util/openshift"
 
 	"github.com/sirupsen/logrus"
diff --git a/cmd/kamel/main.go b/cmd/kamel/main.go
index e711d0d..18822ea 100644
--- a/cmd/kamel/main.go
+++ b/cmd/kamel/main.go
@@ -26,7 +26,7 @@ import (
 
 	"github.com/apache/camel-k/pkg/client/cmd"
 
-	_ "github.com/apache/camel-k/pkg/util/knative"
+	_ "github.com/apache/camel-k/pkg/apis/camel/v1alpha1/knative"
 	_ "github.com/apache/camel-k/pkg/util/openshift"
 	_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
 )
diff --git a/pkg/util/knative/register.go b/pkg/apis/camel/v1alpha1/knative/register.go
similarity index 100%
rename from pkg/util/knative/register.go
rename to pkg/apis/camel/v1alpha1/knative/register.go
diff --git a/pkg/util/knative/types.go b/pkg/apis/camel/v1alpha1/knative/types.go
similarity index 100%
rename from pkg/util/knative/types.go
rename to pkg/apis/camel/v1alpha1/knative/types.go
diff --git a/pkg/apis/camel/v1alpha1/knative/types_support.go b/pkg/apis/camel/v1alpha1/knative/types_support.go
new file mode 100644
index 0000000..b8cc62d
--- /dev/null
+++ b/pkg/apis/camel/v1alpha1/knative/types_support.go
@@ -0,0 +1,54 @@
+/*
+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 knative
+
+import (
+	"net/url"
+	"strconv"
+)
+
+// BuildCamelServiceDefinition creates a CamelServiceDefinition from a given URL
+func BuildCamelServiceDefinition(name string, serviceType CamelServiceType, rawurl string) (*CamelServiceDefinition, error) {
+	serviceURL, err := url.Parse(rawurl)
+	if err != nil {
+		return nil, err
+	}
+	definition := CamelServiceDefinition{
+		Name:        name,
+		Host:        serviceURL.Host,
+		Port:        -1,
+		ServiceType: serviceType,
+		Protocol:    CamelProtocol(serviceURL.Scheme),
+		Metadata:    make(map[string]string),
+	}
+	portStr := serviceURL.Port()
+	if portStr != "" {
+		port, err := strconv.Atoi(portStr)
+		if err != nil {
+			return nil, err
+		}
+		definition.Port = port
+	}
+	path := serviceURL.Path
+	if path != "" {
+		definition.Metadata[CamelMetaServicePath] = path
+	} else {
+		definition.Metadata[CamelMetaServicePath] = "/"
+	}
+	return &definition, nil
+}
diff --git a/pkg/trait/knative.go b/pkg/trait/knative.go
index ae2e30d..ae743af 100644
--- a/pkg/trait/knative.go
+++ b/pkg/trait/knative.go
@@ -33,6 +33,7 @@ import (
 
 	"github.com/apache/camel-k/pkg/metadata"
 	knativeutil "github.com/apache/camel-k/pkg/util/knative"
+	knativeapi "github.com/apache/camel-k/pkg/apis/camel/v1alpha1/knative"
 	eventing "github.com/knative/eventing/pkg/apis/eventing/v1alpha1"
 	serving "github.com/knative/serving/pkg/apis/serving/v1alpha1"
 	corev1 "k8s.io/api/core/v1"
@@ -296,19 +297,19 @@ func (t *knativeTrait) getConfigurationSerialized(e *Environment) (string, error
 	return string(res), nil
 }
 
-func (t *knativeTrait) getConfiguration(e *Environment) (knativeutil.CamelEnvironment, error) {
-	env := knativeutil.NewCamelEnvironment()
+func (t *knativeTrait) getConfiguration(e *Environment) (knativeapi.CamelEnvironment, error) {
+	env := knativeapi.NewCamelEnvironment()
 	// Sources
 	sourceChannels := t.getConfiguredSourceChannels()
 	for _, ch := range sourceChannels {
-		svc := knativeutil.CamelServiceDefinition{
+		svc := knativeapi.CamelServiceDefinition{
 			Name:        ch,
 			Host:        "0.0.0.0",
 			Port:        8080,
-			Protocol:    knativeutil.CamelProtocolHTTP,
-			ServiceType: knativeutil.CamelServiceTypeChannel,
+			Protocol:    knativeapi.CamelProtocolHTTP,
+			ServiceType: knativeapi.CamelServiceTypeChannel,
 			Metadata: map[string]string{
-				knativeutil.CamelMetaServicePath: "/",
+				knativeapi.CamelMetaServicePath: "/",
 			},
 		}
 		env.Services = append(env.Services, svc)
@@ -324,27 +325,27 @@ func (t *knativeTrait) getConfiguration(e *Environment) (knativeutil.CamelEnviro
 		if hostname == "" {
 			return env, errors.New("cannot find address of channel " + ch)
 		}
-		svc := knativeutil.CamelServiceDefinition{
+		svc := knativeapi.CamelServiceDefinition{
 			Name:        ch,
 			Host:        hostname,
 			Port:        80,
-			Protocol:    knativeutil.CamelProtocolHTTP,
-			ServiceType: knativeutil.CamelServiceTypeChannel,
+			Protocol:    knativeapi.CamelProtocolHTTP,
+			ServiceType: knativeapi.CamelServiceTypeChannel,
 			Metadata: map[string]string{
-				knativeutil.CamelMetaServicePath: "/",
+				knativeapi.CamelMetaServicePath: "/",
 			},
 		}
 		env.Services = append(env.Services, svc)
 	}
 	// Adding default endpoint
-	defSvc := knativeutil.CamelServiceDefinition{
+	defSvc := knativeapi.CamelServiceDefinition{
 		Name:        "default",
 		Host:        "0.0.0.0",
 		Port:        8080,
-		Protocol:    knativeutil.CamelProtocolHTTP,
-		ServiceType: knativeutil.CamelServiceTypeEndpoint,
+		Protocol:    knativeapi.CamelProtocolHTTP,
+		ServiceType: knativeapi.CamelServiceTypeEndpoint,
 		Metadata: map[string]string{
-			knativeutil.CamelMetaServicePath: "/",
+			knativeapi.CamelMetaServicePath: "/",
 		},
 	}
 	env.Services = append(env.Services, defSvc)


[camel-k] 04/06: Add option to provide initial configuration to Knative

Posted by lb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 38dce53521e61a0118af2f8f6c5be5c820fef11f
Author: nferraro <ni...@gmail.com>
AuthorDate: Mon Dec 24 09:37:21 2018 +0100

    Add option to provide initial configuration to Knative
---
 pkg/apis/camel/v1alpha1/knative/types_support.go | 21 +++++++++++++++++++--
 pkg/trait/knative.go                             | 23 +++++++++++++++++------
 2 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/pkg/apis/camel/v1alpha1/knative/types_support.go b/pkg/apis/camel/v1alpha1/knative/types_support.go
index 49df4c3..97c6fe7 100644
--- a/pkg/apis/camel/v1alpha1/knative/types_support.go
+++ b/pkg/apis/camel/v1alpha1/knative/types_support.go
@@ -54,12 +54,29 @@ func BuildCamelServiceDefinition(name string, serviceType CamelServiceType, rawu
 	return &definition, nil
 }
 
-
 // Serialize serializes a CamelEnvironment
-func (env CamelEnvironment) Serialize() (string, error) {
+func (env *CamelEnvironment) Serialize() (string, error) {
 	res, err := json.Marshal(env)
 	if err != nil {
 		return "", err
 	}
 	return string(res), nil
 }
+
+// Deserialize deserializes a camel environment into this struct
+func (env *CamelEnvironment) Deserialize(str string) error {
+	if err := json.Unmarshal([]byte(str), env); err != nil {
+		return err
+	}
+	return nil
+}
+
+// ContainsService tells if the environment contains a service with the given name and type
+func (env *CamelEnvironment) ContainsService(name string, serviceType CamelServiceType) bool {
+	for _, svc := range env.Services {
+		if svc.Name == name && svc.ServiceType == serviceType {
+			return true
+		}
+	}
+	return false
+}
diff --git a/pkg/trait/knative.go b/pkg/trait/knative.go
index 60010b4..977d6ad 100644
--- a/pkg/trait/knative.go
+++ b/pkg/trait/knative.go
@@ -45,12 +45,13 @@ const (
 )
 
 type knativeTrait struct {
-	BaseTrait `property:",squash"`
-	Sources   string `property:"sources"`
-	Sinks     string `property:"sinks"`
-	MinScale  *int   `property:"minScale"`
-	MaxScale  *int   `property:"maxScale"`
-	Auto      *bool  `property:"auto"`
+	BaseTrait     `property:",squash"`
+	Configuration string `property:"configuration"`
+	Sources       string `property:"sources"`
+	Sinks         string `property:"sinks"`
+	MinScale      *int   `property:"minScale"`
+	MaxScale      *int   `property:"maxScale"`
+	Auto          *bool  `property:"auto"`
 }
 
 func newKnativeTrait() *knativeTrait {
@@ -293,9 +294,16 @@ func (t *knativeTrait) getConfigurationSerialized(e *Environment) (string, error
 
 func (t *knativeTrait) getConfiguration(e *Environment) (knativeapi.CamelEnvironment, error) {
 	env := knativeapi.NewCamelEnvironment()
+	if t.Configuration != "" {
+		env.Deserialize(t.Configuration)
+	}
+
 	// Sources
 	sourceChannels := t.getConfiguredSourceChannels()
 	for _, ch := range sourceChannels {
+		if env.ContainsService(ch, knativeapi.CamelServiceTypeChannel) {
+			continue
+		}
 		svc := knativeapi.CamelServiceDefinition{
 			Name:        ch,
 			Host:        "0.0.0.0",
@@ -311,6 +319,9 @@ func (t *knativeTrait) getConfiguration(e *Environment) (knativeapi.CamelEnviron
 	// Sinks
 	sinkChannels := t.getConfiguredSinkChannels()
 	for _, ch := range sinkChannels {
+		if env.ContainsService(ch, knativeapi.CamelServiceTypeChannel) {
+			continue
+		}
 		channel, err := t.retrieveChannel(e.Integration.Namespace, ch)
 		if err != nil {
 			return env, err


[camel-k] 02/06: Moving Knative env serialization to API

Posted by lb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 40e9ab5ee4e8ab853b0074da69dcedee262d1e33
Author: nferraro <ni...@gmail.com>
AuthorDate: Fri Dec 21 17:19:13 2018 +0100

    Moving Knative env serialization to API
---
 pkg/apis/camel/v1alpha1/knative/types_support.go | 11 +++++++++++
 pkg/trait/knative.go                             | 10 ++--------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/pkg/apis/camel/v1alpha1/knative/types_support.go b/pkg/apis/camel/v1alpha1/knative/types_support.go
index b8cc62d..49df4c3 100644
--- a/pkg/apis/camel/v1alpha1/knative/types_support.go
+++ b/pkg/apis/camel/v1alpha1/knative/types_support.go
@@ -18,6 +18,7 @@ limitations under the License.
 package knative
 
 import (
+	"encoding/json"
 	"net/url"
 	"strconv"
 )
@@ -52,3 +53,13 @@ func BuildCamelServiceDefinition(name string, serviceType CamelServiceType, rawu
 	}
 	return &definition, nil
 }
+
+
+// Serialize serializes a CamelEnvironment
+func (env CamelEnvironment) Serialize() (string, error) {
+	res, err := json.Marshal(env)
+	if err != nil {
+		return "", err
+	}
+	return string(res), nil
+}
diff --git a/pkg/trait/knative.go b/pkg/trait/knative.go
index ae743af..60010b4 100644
--- a/pkg/trait/knative.go
+++ b/pkg/trait/knative.go
@@ -18,7 +18,6 @@ limitations under the License.
 package trait
 
 import (
-	"encoding/json"
 	"fmt"
 
 	"github.com/apache/camel-k/pkg/util/envvar"
@@ -31,9 +30,9 @@ import (
 
 	"github.com/apache/camel-k/pkg/apis/camel/v1alpha1"
 
+	knativeapi "github.com/apache/camel-k/pkg/apis/camel/v1alpha1/knative"
 	"github.com/apache/camel-k/pkg/metadata"
 	knativeutil "github.com/apache/camel-k/pkg/util/knative"
-	knativeapi "github.com/apache/camel-k/pkg/apis/camel/v1alpha1/knative"
 	eventing "github.com/knative/eventing/pkg/apis/eventing/v1alpha1"
 	serving "github.com/knative/serving/pkg/apis/serving/v1alpha1"
 	corev1 "k8s.io/api/core/v1"
@@ -289,12 +288,7 @@ func (t *knativeTrait) getConfigurationSerialized(e *Environment) (string, error
 	if err != nil {
 		return "", errors.Wrap(err, "unable fetch environment configuration")
 	}
-
-	res, err := json.Marshal(env)
-	if err != nil {
-		return "", errors.Wrap(err, "unable to serialize Knative configuration")
-	}
-	return string(res), nil
+	return env.Serialize()
 }
 
 func (t *knativeTrait) getConfiguration(e *Environment) (knativeapi.CamelEnvironment, error) {


[camel-k] 03/06: Add flows to types

Posted by lb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 9b0ad0252e8a6fd19649e5becbbebb05e99f710c
Author: nferraro <ni...@gmail.com>
AuthorDate: Mon Dec 24 09:07:13 2018 +0100

    Add flows to types
---
 pkg/apis/camel/v1alpha1/types.go         |  3 +++
 pkg/apis/camel/v1alpha1/types_support.go | 10 ++++++++++
 2 files changed, 13 insertions(+)

diff --git a/pkg/apis/camel/v1alpha1/types.go b/pkg/apis/camel/v1alpha1/types.go
index ef4dcc0..9951e3f 100644
--- a/pkg/apis/camel/v1alpha1/types.go
+++ b/pkg/apis/camel/v1alpha1/types.go
@@ -363,6 +363,9 @@ type Flow struct {
 	Steps []Step `json:"steps"`
 }
 
+// Flows are collections of Flow
+type Flows []Flow
+
 // Step --
 type Step struct {
 	Kind string `json:"kind"`
diff --git a/pkg/apis/camel/v1alpha1/types_support.go b/pkg/apis/camel/v1alpha1/types_support.go
index 21df605..95a842f 100644
--- a/pkg/apis/camel/v1alpha1/types_support.go
+++ b/pkg/apis/camel/v1alpha1/types_support.go
@@ -19,6 +19,7 @@ package v1alpha1
 
 import (
 	"fmt"
+	"gopkg.in/yaml.v2"
 	"strings"
 
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -128,3 +129,12 @@ func TraitProfileByName(name string) TraitProfile {
 	}
 	return ""
 }
+
+// Serialize serializes a Flow
+func (flows Flows) Serialize() (string, error) {
+	res, err := yaml.Marshal(flows)
+	if err != nil {
+		return "", err
+	}
+	return string(res), nil
+}


[camel-k] 06/06: Adding JSON auto-conversion option

Posted by lb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 94305ddbb1e1dca841976a30a401a2239b48d26a
Author: nferraro <ni...@gmail.com>
AuthorDate: Mon Dec 24 12:12:42 2018 +0100

    Adding JSON auto-conversion option
---
 .../camel/component/knative/KnativeComponent.java  | 10 ++++++++
 .../knative/KnativeConversionProcessor.java        | 28 ++++++++++++++++++++++
 .../camel/component/knative/KnativeEndpoint.java   | 20 ++++++++++------
 3 files changed, 51 insertions(+), 7 deletions(-)

diff --git a/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java b/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
index 0767fda..264f644 100644
--- a/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
+++ b/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeComponent.java
@@ -30,6 +30,8 @@ public class KnativeComponent extends DefaultComponent {
     private final KnativeConfiguration configuration;
     private String environmentPath;
 
+    private boolean jsonSerializationEnabled;
+
     public KnativeComponent() {
         this(null);
     }
@@ -116,4 +118,12 @@ public class KnativeComponent extends DefaultComponent {
 
         return conf;
     }
+
+    public boolean isJsonSerializationEnabled() {
+        return jsonSerializationEnabled;
+    }
+
+    public void setJsonSerializationEnabled(boolean jsonSerializationEnabled) {
+        this.jsonSerializationEnabled = jsonSerializationEnabled;
+    }
 }
diff --git a/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConversionProcessor.java b/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConversionProcessor.java
new file mode 100644
index 0000000..6ff5830
--- /dev/null
+++ b/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeConversionProcessor.java
@@ -0,0 +1,28 @@
+package org.apache.camel.component.knative;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+
+/**
+ * Converts objects prior to serializing them to external endpoints or channels
+ */
+public class KnativeConversionProcessor implements Processor {
+
+    private boolean enabled;
+
+    public KnativeConversionProcessor(boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    @Override
+    public void process(Exchange exchange) throws Exception {
+        if (enabled) {
+            Object body = exchange.getIn().getBody();
+            if (body != null) {
+                byte[] newBody = Knative.MAPPER.writeValueAsBytes(body);
+                exchange.getIn().setBody(newBody);
+                exchange.getIn().setHeader("CE-ContentType", "application/json");
+            }
+        }
+    }
+}
diff --git a/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java b/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
index 10f264c..89c7f3b 100644
--- a/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
+++ b/runtime/camel-knative/src/main/java/org/apache/camel/component/knative/KnativeEndpoint.java
@@ -16,13 +16,6 @@
  */
 package org.apache.camel.component.knative;
 
-import java.io.InputStream;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
-import java.util.Map;
-
 import org.apache.camel.CamelContext;
 import org.apache.camel.Consumer;
 import org.apache.camel.DelegateEndpoint;
@@ -44,6 +37,13 @@ import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.URISupport;
 import org.apache.commons.lang3.StringUtils;
 
+import java.io.InputStream;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.Map;
+
 import static org.apache.camel.util.ObjectHelper.ifNotEmpty;
 
 
@@ -101,6 +101,11 @@ public class KnativeEndpoint extends DefaultEndpoint implements DelegateEndpoint
     }
 
     @Override
+    public KnativeComponent getComponent() {
+        return (KnativeComponent) super.getComponent();
+    }
+
+    @Override
     public Producer createProducer() throws Exception {
         return new KnativeProducer(
             this,
@@ -121,6 +126,7 @@ public class KnativeEndpoint extends DefaultEndpoint implements DelegateEndpoint
                 // Always remove host so it's always computed from the URL and not inherited from the exchange
                 headers.remove("Host");
             },
+            new KnativeConversionProcessor(getComponent().isJsonSerializationEnabled()),
             endpoint.createProducer()
         );
     }