diff --git a/io.openems.edge.core/src/io/openems/edge/core/componentmanager/EdgeConfigWorker.java b/io.openems.edge.core/src/io/openems/edge/core/componentmanager/EdgeConfigWorker.java index d47ed1d4bf..ffd97ead82 100644 --- a/io.openems.edge.core/src/io/openems/edge/core/componentmanager/EdgeConfigWorker.java +++ b/io.openems.edge.core/src/io/openems/edge/core/componentmanager/EdgeConfigWorker.java @@ -264,14 +264,17 @@ private boolean readConfigurations(EdgeConfig.ActualEdgeConfig.Builder builder, continue; } + // Prepare the fallback for null OR non-String "id" + var fallbackId = this.parent.getAllComponents().stream() + .filter(c -> config.getPid().equals(c.serviceFactoryPid())).map(c -> c.id()).findFirst() + .orElse(null); + // Read Component-ID - var componentId = switch (properties.get("id")) { - case String s -> s; // Read 'id' property - case null, default -> // - this.parent.getAllComponents().stream() // - .filter(c -> config.getPid().equals(c.serviceFactoryPid())) // - .map(c -> c.id()) // - .findFirst().orElse(null); + var idObj = properties.get("id"); + var componentId = switch (idObj) { + case String s -> s; // Use 'id' if it's a proper String + case null -> fallbackId; // No 'id' => try singleton fallback + default -> fallbackId; // 'id' is non-String => also use fallback }; if (componentId == null) {