]> git.basschouten.com Git - openhab-addons.git/commitdiff
[mongodb] Fix handling of GroupItems on restore (#16978)
authorJ-N-K <github@klug.nrw>
Mon, 1 Jul 2024 21:26:58 +0000 (23:26 +0200)
committerGitHub <noreply@github.com>
Mon, 1 Jul 2024 21:26:58 +0000 (23:26 +0200)
Related to https://github.com/openhab/openhab-core/pull/4257

Signed-off-by: Jan N. Klug <github@klug.nrw>
bundles/org.openhab.persistence.mongodb/src/main/java/org/openhab/persistence/mongodb/internal/MongoDBTypeConversions.java

index eb18986105894f699f11aa7be732d8534a5cdb0e..eaca9697b6bc0a7f1073bd890aeb7e5c3079c350 100644 (file)
@@ -26,6 +26,7 @@ import org.bson.types.Binary;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.core.items.GenericItem;
+import org.openhab.core.items.GroupItem;
 import org.openhab.core.items.Item;
 import org.openhab.core.library.items.CallItem;
 import org.openhab.core.library.items.ColorItem;
@@ -77,11 +78,12 @@ public class MongoDBTypeConversions {
      * @throws IllegalArgumentException If the item type is not supported.
      */
     public static State getStateFromDocument(Item item, Document doc) {
-        BiFunction<Item, Document, State> converter = ITEM_STATE_CONVERTERS.get(item.getClass());
+        Item realItem = item instanceof GroupItem groupItem ? groupItem.getBaseItem() : item;
+        BiFunction<Item, Document, State> converter = ITEM_STATE_CONVERTERS.get(realItem.getClass());
         if (converter != null) {
-            return converter.apply(item, doc);
+            return converter.apply(realItem, doc);
         } else {
-            throw new IllegalArgumentException("Unsupported item type: " + item.getClass().getName());
+            throw new IllegalArgumentException("Unsupported item type: " + realItem.getClass().getName());
         }
     }