Fix #1234: added e2e test for master
diff --git a/addons/master/master.go b/addons/master/master.go
index 33b4ff8..d039cf1 100644
--- a/addons/master/master.go
+++ b/addons/master/master.go
@@ -174,7 +174,7 @@
 			parts := strings.Split(endpoint, ":")
 			if len(parts) > 2 {
 				// syntax "master:lockname:endpoint:..."
-				childComponent := parts[2]
+				childComponent := strings.ReplaceAll(parts[2], "/", "")
 				if artifact := e.CamelCatalog.GetArtifactByScheme(childComponent); artifact != nil {
 					dependencies = append(dependencies, artifact.GetDependencyID())
 				}
diff --git a/e2e/files/Master.java b/e2e/files/Master.java
new file mode 100644
index 0000000..ff28451
--- /dev/null
+++ b/e2e/files/Master.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class Java extends RouteBuilder {
+  @Override
+  public void configure() throws Exception {
+	  from("master:lock:timer:tick")
+	  .setHeader("m").constant("string!")
+	  .setBody().simple("Magic${header.m}")
+      .log("${body}");
+  }
+}
diff --git a/e2e/run_test.go b/e2e/run_test.go
index 9eb83b6..ba99995 100644
--- a/e2e/run_test.go
+++ b/e2e/run_test.go
@@ -53,6 +53,21 @@
 			Expect(kamel("delete", "--all", "-n", ns).Execute()).Should(BeNil())
 		})
 
+		t.Run("run java with master", func(t *testing.T) {
+			RegisterTestingT(t)
+			Expect(kamel("run", "-n", ns, "files/Master.java").Execute()).Should(BeNil())
+			Eventually(integrationPodPhase(ns, "master"), 5*time.Minute).Should(Equal(v1.PodRunning))
+			Eventually(integrationLogs(ns, "master"), 1*time.Minute).Should(ContainSubstring("Magicstring!"))
+			Eventually(configMap(ns, "master-lock"), 10*time.Second).ShouldNot(BeNil())
+			// Start a second integration with the same lock (it should not start the route)
+			Expect(kamel("run", "-n", ns, "files/Master.java", "--name", "second",
+				"-t", "master.configmap=master", "-t", "master.label-value=master").Execute()).Should(BeNil())
+			Eventually(integrationPodPhase(ns, "second"), 5*time.Minute).Should(Equal(v1.PodRunning))
+			Eventually(integrationLogs(ns, "second"), 1*time.Minute).Should(ContainSubstring("started in"))
+			Eventually(integrationLogs(ns, "second"), 30*time.Second).ShouldNot(ContainSubstring("Magicstring!"))
+			Expect(kamel("delete", "--all", "-n", ns).Execute()).Should(BeNil())
+		})
+
 		t.Run("run xml", func(t *testing.T) {
 			RegisterTestingT(t)
 			Expect(kamel("run", "-n", ns, "files/xml.xml").Execute()).Should(BeNil())
diff --git a/e2e/test_support.go b/e2e/test_support.go
index 4df31d5..66e7a6c 100644
--- a/e2e/test_support.go
+++ b/e2e/test_support.go
@@ -211,7 +211,7 @@
 		lst := corev1.PodList{
 			TypeMeta: metav1.TypeMeta{
 				Kind:       "Pod",
-				APIVersion: v1.SchemeGroupVersion.String(),
+				APIVersion: corev1.SchemeGroupVersion.String(),
 			},
 		}
 		err := testClient.List(testContext, &lst,
@@ -229,6 +229,23 @@
 	}
 }
 
+func configMap(ns string, name string) func() *corev1.ConfigMap {
+	return func() *corev1.ConfigMap {
+		cm := corev1.ConfigMap{}
+		key := k8sclient.ObjectKey{
+			Namespace: ns,
+			Name:      name,
+		}
+		err := testClient.Get(testContext, key, &cm)
+		if err != nil && k8serrors.IsNotFound(err) {
+			return nil
+		} else if err != nil {
+			panic(err)
+		}
+		return &cm
+	}
+}
+
 func integrationCronJob(ns string, name string) func() *v1beta1.CronJob {
 	return func() *v1beta1.CronJob {
 		lst := v1beta1.CronJobList{