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

glcj pushed a commit to branch feature/merlot
in repository https://gitbox.apache.org/repos/asf/plc4x-extras.git


The following commit(s) were added to refs/heads/feature/merlot by this push:
     new f1f9f1b  Kafka servince is not working in BP.
f1f9f1b is described below

commit f1f9f1b0c7f7374a02f69308c226af9dafa8ced2
Author: César García <[email protected]>
AuthorDate: Sun Apr 26 17:20:50 2026 -0400

    Kafka servince is not working in BP.
---
 plc4j/tools/merlot/anahata.md                      |   3 +
 .../src/main/feature/feature.xml                   |  16 ++-
 .../nb-configuration.xml                           |  18 ++++
 .../merlot/org.apache.plc4x.merlot.kafka/pom.xml   |  55 ++++++++++-
 ...=> org.apache.plc4x.merlot.kafka.collector.cfg} |   0
 ...MyService.java => MerlotDecanterCollector.java} |   7 +-
 .../plc4x/merlot/kafka/api/MyServiceImpl.java      |  25 -----
 .../core/MerlotKafkaManagedServiceFactory.java     |  45 ++++++++-
 ....java => MerlotKafkaDecanterCollectorImpl.java} | 107 +++++++++++++++++++--
 .../resources/OSGI-INF/blueprint/kafka-service.xml |  23 ++++-
 plc4j/tools/merlot/org.apache.plc4x.merlot/pom.xml |   2 +-
 plc4j/tools/merlot/pom.xml                         |  11 ++-
 12 files changed, 261 insertions(+), 51 deletions(-)

diff --git a/plc4j/tools/merlot/anahata.md b/plc4j/tools/merlot/anahata.md
new file mode 100644
index 0000000..7a959db
--- /dev/null
+++ b/plc4j/tools/merlot/anahata.md
@@ -0,0 +1,3 @@
+# Anahata Project Notes
+
+This file is for Anahata AI Assistant's notes regarding the 'merlot' project.
diff --git 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.features/src/main/feature/feature.xml
 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.features/src/main/feature/feature.xml
index 120b6d0..a1e38e1 100755
--- 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.features/src/main/feature/feature.xml
+++ 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.features/src/main/feature/feature.xml
@@ -20,7 +20,8 @@
     
     <!-- Repositories of complementary projects are indicated -->
     
<repository>mvn:org.apache.activemq/artemis-features/2.38.0/xml/features</repository>
        
-
+    
<!--<repository>mvn:org.apache.karaf.decanter/apache-karaf-decanter/2.12.0/xml/features</repository>-->
   
+    
     <feature name='${project.artifactId}' description='${project.name}' 
version='${project.version}'>
         <details>${project.description}</details>             
 
@@ -79,7 +80,7 @@
         <bundle 
start-level="30">wrap:mvn:org.json/json/20250517/$Export-Package=*;version=&quot;20250517&quot;,!*</bundle>
         <bundle 
start-level="30">wrap:mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}/$Export-Package=*;version=&quot;${jackson.version}&quot;,!*</bundle>
         <bundle 
start-level="30">wrap:mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}/$Export-Package=*;version=&quot;${jackson.version}&quot;,!*</bundle>
-        <bundle 
start-level="30">wrap:mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}/$Export-Package=*;version=&quot;${jackson.version}&quot;,!*</bundle>
+        <bundle 
start-level="30">wrap:mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson-annotations.version}/$Export-Package=*;version=&quot;${jackson-annotations.version}&quot;,!*</bundle>
         
         <bundle 
start-level="28">mvn:org.ops4j.pax.logging/pax-logging-api/2.2.3</bundle>
         
@@ -715,6 +716,17 @@ dataSourceName=rtdb
         <bundle 
start-level="30">mvn:org.apache.activemq/artemis-features/2.30.0</bundle>     
     </feature>  
     
+    <feature name='plc4x-kafka' description='${project.name}' 
version='${project.version}'>
+        <feature>decanter-common</feature>   
+        <bundle 
start-level="30">wrap:mvn:org.apache.kafka/kafka-clients/${kafka.version}/$Bundle-SymbolicName=kafka-clients&amp;Bundle-Version=${kafka.version}&amp;Bundle-ManifestVersion=&quot;2&quot;&amp;Export-Package=*;version=&quot;${kafka.version}&quot;,!*</bundle>
        
+        <!--<bundle 
start-level="30">mvn:org.apache.kafka/kafka-clients/${kafka.version}</bundle>-->
  
+        <bundle 
start-level="30">wrap:mvn:org.apache.karaf.decanter.collector/org.apache.karaf.decanter.collector.utils/${decanter.version}/$Bundle-SymbolicName=org.apache.karaf.decanter.collector.utils&amp;Bundle-Version=${decanter.version}&amp;Bundle-ManifestVersion=&quot;2&quot;&amp;Export-Package=*;version=&quot;${decanter.version}&quot;,!*</bundle>
                
+        <!--<bundle 
start-level="30">mvn:org.apache.karaf.decanter.collector/org.apache.karaf.decanter.collector.utils/${decanter.version}</bundle>-->
    
+        
+        <bundle 
start-level="80">mvn:org.apache.plc4x.merlot.kafka/org.apache.plc4x.merlot.kafka/${project.version}</bundle>
+        <configfile 
finalname="/etc/org.apache.plc4x.merlot.kafka.collector.cfg">mvn:org.apache.plc4x.merlot.kafka/org.apache.plc4x.merlot.kafka/${project.version}/cfg</configfile>
            
+    </feature>     
+    
     <feature name="plc4x-iotdb" version="${project.version}"> 
         <!--<bundle 
start-level="60">mvn:org.apache.iotdb/iotdb-session/${iotdb.session.version}</bundle>-->
  
         <bundle 
start-level="60">wrap:mvn:org.apache.iotdb/iotdb-session/${iotdb.session.version}/$Bundle-SymbolicName=iotdb-session&amp;Bundle-Version=${iotdb.session.version}&amp;Bundle-ManifestVersion=&quot;2&quot;&amp;Export-Package=*;version=&quot;${iotdb.session.version}&quot;,!*</bundle>
diff --git 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/nb-configuration.xml 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/nb-configuration.xml
new file mode 100644
index 0000000..5b0f1f8
--- /dev/null
+++ b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/nb-configuration.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+    <!--
+This file contains additional configuration written by modules in the NetBeans 
IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be 
limited or fail altogether.
+-->
+    <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1";>
+        <!--
+Properties that influence various parts of the IDE, especially code formatting 
and the like. 
+You can copy and paste the single properties, into the pom.xml file and the 
IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting 
rules for example).
+Any value defined here will override the pom.xml file value but is only 
applicable to the current project.
+-->
+        
<org-netbeans-modules-javascript2-requirejs.enabled>true</org-netbeans-modules-javascript2-requirejs.enabled>
+    </properties>
+</project-shared-configuration>
diff --git a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/pom.xml 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/pom.xml
index d65ee83..c42666e 100644
--- a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/pom.xml
+++ b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/pom.xml
@@ -65,8 +65,8 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.13.0</version>
                 <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
+                    <source>21</source>
+                    <target>21</target>
                     <maxmem>256M</maxmem>
                 </configuration>
             </plugin>
@@ -85,7 +85,26 @@
                 <artifactId>maven-deploy-plugin</artifactId>
                 <version>3.1.3</version>
             </plugin>
-
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>attach-artifact</goal>
+                        </goals>
+                        <configuration>
+                            <artifacts>
+                                <artifact>
+                                    
<file>src/main/cfg/org.apache.plc4x.merlot.kafka.collector.cfg</file>
+                                    <type>cfg</type>
+                                </artifact>
+                            </artifacts>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>  
         </plugins>
     </build>
     <dependencies>
@@ -104,5 +123,35 @@
             <artifactId>osgi.annotation</artifactId>
             <version>8.1.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.decanter</groupId>
+            <artifactId>org.apache.karaf.decanter.api</artifactId>
+            <version>2.12.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.decanter.collector</groupId>
+            <artifactId>org.apache.karaf.decanter.collector.utils</artifactId>
+            <version>2.12.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.event</artifactId>
+            <version>1.4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.kafka</groupId>
+            <artifactId>kafka-clients</artifactId>
+            <version>${kafka.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>${jackson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>2.0.17</version>
+        </dependency>
     </dependencies>
 </project>
diff --git 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/cfg/org.apache.karaf.decanter.collector.kafka.cfg
 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/cfg/org.apache.plc4x.merlot.kafka.collector.cfg
similarity index 100%
rename from 
plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/cfg/org.apache.karaf.decanter.collector.kafka.cfg
rename to 
plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/cfg/org.apache.plc4x.merlot.kafka.collector.cfg
diff --git 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MyService.java
 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MerlotDecanterCollector.java
similarity index 89%
rename from 
plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MyService.java
rename to 
plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MerlotDecanterCollector.java
index 1dd42ce..6b6dcd2 100644
--- 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MyService.java
+++ 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MerlotDecanterCollector.java
@@ -16,8 +16,9 @@
  */
 package org.apache.plc4x.merlot.kafka.api;
 
-public interface MyService {
+public interface MerlotDecanterCollector {
     
-    public String echo(String message);
+    public void init();
     
-}
\ No newline at end of file
+    public void destroy();    
+}
diff --git 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MyServiceImpl.java
 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MyServiceImpl.java
deleted file mode 100644
index f840714..0000000
--- 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/api/MyServiceImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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.plc4x.merlot.kafka.api;
-
-public class MyServiceImpl implements MyService {
-    
-    public String echo(String message) {
-        return "Echo processed: " + message;
-    }
-    
-}
\ No newline at end of file
diff --git 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/core/MerlotKafkaManagedServiceFactory.java
 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/core/MerlotKafkaManagedServiceFactory.java
index 361e283..5a41e00 100644
--- 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/core/MerlotKafkaManagedServiceFactory.java
+++ 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/core/MerlotKafkaManagedServiceFactory.java
@@ -17,12 +17,40 @@
 package org.apache.plc4x.merlot.kafka.core;
 
 import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+import org.apache.karaf.decanter.api.marshaller.Unmarshaller;
+import org.apache.plc4x.merlot.kafka.api.MerlotDecanterCollector;
+import org.apache.plc4x.merlot.kafka.impl.MerlotKafkaDecanterCollectorImpl;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.cm.ConfigurationException;
 import org.osgi.service.cm.ManagedServiceFactory;
+import org.osgi.service.event.EventAdmin;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 public class MerlotKafkaManagedServiceFactory implements ManagedServiceFactory 
{
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(MerlotKafkaManagedServiceFactory.class); 
+    private static String FILTER_COLLECTOR =  "(&(" + Constants.OBJECTCLASS + 
"=" + MerlotDecanterCollector.class.getName() + ")" +
+                        "(" + Constants.SERVICE_PID + "=*))";   
+    
+    private final BundleContext ctx;    
+    private final EventAdmin dispatcher;
+    private final Unmarshaller unmarshaller;  
+    private Map<String,ServiceRegistration> services = new HashMap<>();
 
+    public MerlotKafkaManagedServiceFactory(BundleContext ctx, EventAdmin 
dispatcher, Unmarshaller unmarshaller) {
+        this.ctx = ctx;
+        this.dispatcher = dispatcher;
+        this.unmarshaller = unmarshaller;
+    }
+    
     @Override
     public String getName() {
         return "Prueba";
@@ -30,12 +58,25 @@ public class MerlotKafkaManagedServiceFactory implements 
ManagedServiceFactory {
 
     @Override
     public void updated(String pid, Dictionary<String, ?> properties) throws 
ConfigurationException {
-        System.out.println("pid: " + pid);
+        System.out.println("Registering service: " + pid);
+        deleted(pid);
+        MerlotKafkaDecanterCollectorImpl bundle = new 
MerlotKafkaDecanterCollectorImpl(dispatcher, unmarshaller);        
+        Hashtable<String, String> serviceProperties = new Hashtable<>();
+        serviceProperties.put(Constants.SERVICE_PID, pid);
+        ServiceRegistration registration = 
ctx.registerService(MerlotDecanterCollector.class, bundle, serviceProperties);
+        services.put(pid, registration);
     }
 
     @Override
     public void deleted(String pid) {
-        System.out.println("pid: " + pid);
+        LOGGER.info("Removing service: " + pid);
+        if (services.containsKey(pid)) {
+            MerlotDecanterCollector bundle = (MerlotDecanterCollector) 
ctx.getService(services.get(pid).getReference());
+            bundle.destroy();
+            services.get(pid).unregister();
+        }
     }
     
+    
+    
 }
diff --git 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/impl/MerlotKafkaDecanterCollector.java
 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/impl/MerlotKafkaDecanterCollectorImpl.java
similarity index 57%
rename from 
plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/impl/MerlotKafkaDecanterCollector.java
rename to 
plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/impl/MerlotKafkaDecanterCollectorImpl.java
index 774c6a4..3075260 100644
--- 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/impl/MerlotKafkaDecanterCollector.java
+++ 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/java/org/apache/plc4x/merlot/kafka/impl/MerlotKafkaDecanterCollectorImpl.java
@@ -16,19 +16,60 @@
  */
 package org.apache.plc4x.merlot.kafka.impl;
 
+import java.io.ByteArrayInputStream;
+import java.io.UnsupportedEncodingException;
+import java.time.Duration;
+import java.util.Arrays;
 import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Properties;
-
-
-public class MerlotKafkaDecanterCollector {
+import java.util.concurrent.Executors;
+import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.apache.kafka.clients.consumer.ConsumerRecords;
+import org.apache.kafka.clients.consumer.KafkaConsumer;
+import org.apache.karaf.decanter.api.marshaller.Unmarshaller;
+import org.apache.karaf.decanter.collector.utils.PropertiesPreparator;
+import org.apache.plc4x.merlot.kafka.api.MerlotDecanterCollector;
+import org.osgi.service.event.Event;
+import org.osgi.service.event.EventAdmin;
+import org.osgi.service.event.EventConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class MerlotKafkaDecanterCollectorImpl implements 
MerlotDecanterCollector, Runnable {
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(MerlotKafkaDecanterCollectorImpl.class);  
     
     private String topic;
     private String eventAdminTopic;
     private boolean consuming = false;
     private String messageType;
     
-    public void activate(String pid, Dictionary<String, Object> properties) {
+    private Dictionary<String, Object> properties;    
+    private KafkaConsumer<String, String> consumer;
+    
+    private final EventAdmin dispatcher;
+    private final Unmarshaller unmarshaller;
 
+    public MerlotKafkaDecanterCollectorImpl(EventAdmin dispatcher, 
Unmarshaller unmarshaller) {
+        this.dispatcher = dispatcher;
+        this.unmarshaller = unmarshaller;
+    }
+    
+    @Override
+    public void init() {
+        consuming = true;  
+        Executors.newSingleThreadExecutor().execute(this);          
+    }
+
+    @Override
+    public void destroy() {
+        consuming = false;
+    }    
+    
+    public void activate(String pid, Dictionary<String, Object> properties) {
+        this.properties = properties;
         topic = getValue(properties, "topic", "decanter");
         eventAdminTopic = getValue(properties, EventConstants.EVENT_TOPIC, 
"decanter/collect/kafka/decanter");
         messageType = getValue(properties, "message.type", "text");
@@ -98,12 +139,64 @@ public class MerlotKafkaDecanterCollector {
 
         String sslKeystoreType = getValue(properties, "ssl.keystore.type", 
null);
         if (sslKeystoreType != null)
-            config.put("ssl.keystore.type", sslKeystoreType);         
-    }   
+            config.put("ssl.keystore.type", sslKeystoreType);  
+        
+        ClassLoader originClassLoader = 
Thread.currentThread().getContextClassLoader();
+        try {
+            Thread.currentThread().setContextClassLoader(null);
+            consumer = new KafkaConsumer<String, String>(config);
+            String[] topics = topic.split(",");
+            for (String t:topics){
+                t = t.replaceAll("\\s+","");
+            }
+            consumer.subscribe(Arrays.asList(topics));
+        } finally {
+            Thread.currentThread().setContextClassLoader(originClassLoader);
+        }                    
+    }
+    
+    @Override
+    public void run() {
+        while (consuming) {
+            try {
+                consume();
+            } catch (Exception e) {
+                LOGGER.warn(e.getMessage(), e);
+            }
+        }
+    } 
+    
+    private void consume() throws UnsupportedEncodingException {
+        ConsumerRecords<String, String> records = 
consumer.poll(Duration.ofSeconds(1));
+        if (records.isEmpty()) {
+            return;
+        }
+        Map<String, Object> data = new HashMap<>();
+        data.put("type", "kafka");
+        
+        for (ConsumerRecord<String, String> record : records) {
+            String value = record.value();
+            if (messageType.equalsIgnoreCase("text")) {
+                ByteArrayInputStream is = new 
ByteArrayInputStream(value.getBytes("utf-8"));
+                data.putAll(unmarshaller.unmarshal(is));
+            } else {
+                data.put("payload", value);
+            }
+        }
+
+        try {
+            PropertiesPreparator.prepare(data, properties);
+        } catch (Exception e) {
+            LOGGER.warn("Can't prepare data for the dispatcher", e);
+        }
+
+        Event event = new Event(eventAdminTopic, data);
+        dispatcher.postEvent(event);
+    }    
     
     private String getValue(Dictionary<String, Object> config, String key, 
String defaultValue) {
         String value = (String)config.get(key);
         return (value != null) ? value :  defaultValue;
     }    
-    
+   
 }
diff --git 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/resources/OSGI-INF/blueprint/kafka-service.xml
 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/resources/OSGI-INF/blueprint/kafka-service.xml
index e4e9ac7..cb42b6b 100644
--- 
a/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/resources/OSGI-INF/blueprint/kafka-service.xml
+++ 
b/plc4j/tools/merlot/org.apache.plc4x.merlot.kafka/src/main/resources/OSGI-INF/blueprint/kafka-service.xml
@@ -16,15 +16,32 @@
   limitations under the License.
 -->
 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"; 
default-activation="eager">
-
+    
+    <reference id="servEventAdmin"
+        interface="org.osgi.service.event.EventAdmin"
+        timeout="10000"
+        availability="mandatory">
+    </reference> 
+    
+    <reference id="servMarshaller"
+        interface="org.apache.karaf.decanter.api.marshaller.Marshaller"
+        filter="(component.name=org.apache.karaf.decanter.marshaller.json)"
+        timeout="10000"
+        availability="mandatory">
+    </reference> 
+                                 
     <bean id="serviceBean" 
         
class="org.apache.plc4x.merlot.kafka.core.MerlotKafkaManagedServiceFactory"
-        scope="singleton"/>
+        scope="singleton">
+        <argument ref="blueprintBundleContext"/>
+        <argument ref="servEventAdmin"/> 
+        <argument ref="servMarshaller"/>                  
+    </bean>
 
     <service ref="serviceBean" 
             interface="org.osgi.service.cm.ManagedServiceFactory">
         <service-properties>
-            <entry key="service.pid" 
value="org.apache.karaf.decanter.collector.kafka"/>               
+            <entry key="service.pid" 
value="org.apache.plc4x.merlot.kafka.collector"/>               
         </service-properties>   
     </service>
 
diff --git a/plc4j/tools/merlot/org.apache.plc4x.merlot/pom.xml 
b/plc4j/tools/merlot/org.apache.plc4x.merlot/pom.xml
index 16cdc9a..f8e267a 100644
--- a/plc4j/tools/merlot/org.apache.plc4x.merlot/pom.xml
+++ b/plc4j/tools/merlot/org.apache.plc4x.merlot/pom.xml
@@ -124,7 +124,7 @@
         <dependency>
             <groupId>org.apache.karaf.decanter</groupId>
             <artifactId>apache-karaf-decanter</artifactId>
-            <version>2.10.0</version>
+            <version>${decanter.version}</version>
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
diff --git a/plc4j/tools/merlot/pom.xml b/plc4j/tools/merlot/pom.xml
index 74a9a78..9e8d426 100644
--- a/plc4j/tools/merlot/pom.xml
+++ b/plc4j/tools/merlot/pom.xml
@@ -100,7 +100,8 @@ under the License.
             
     <spifly.version>1.3.6</spifly.version>
             
-    <jackson.version>2.19.0</jackson.version>
+    <jackson.version>2.21.2</jackson.version>
+    <jackson-annotations.version>2.21</jackson-annotations.version>    
             
     <jakarta.xml.bind.version>2.3.3</jakarta.xml.bind.version>
             
@@ -119,7 +120,7 @@ under the License.
     <awaitility.version>3.1.6</awaitility.version>
             
         
-    <decanter.version>2.10.0</decanter.version>
+    <decanter.version>2.12.0</decanter.version>
             
     <hawtbuf.version>1.11</hawtbuf.version>
             
@@ -146,7 +147,7 @@ under the License.
             
     <karaf.version>4.4.10</karaf.version>
             
-    <decanter.version>2.10.0</decanter.version>
+    <decanter.version>2.12.0</decanter.version>
             
     <org.osgi.core.version>6.0.0</org.osgi.core.version>
             
@@ -162,7 +163,7 @@ under the License.
             
     <maven-failsafe-plugin.version>3.5.3</maven-failsafe-plugin.version>
         
-
+    <kafka.version>3.9.2</kafka.version>
         
     <!-- EPICS -->
             
@@ -279,7 +280,7 @@ under the License.
             
     <module>org.apache.plc4x.merlot.grpc</module>
             
-    <!--  <module>org.apache.plc4x.merlot.ui</module> -->
+    <module>org.apache.plc4x.merlot.ui</module>
             
     <module>org.apache.plc4x.merlot.drv.s7</module>
             

Reply via email to