From edc4a2d314182ed2f6d7a08cf9b06263be9203bf Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Thu, 10 Nov 2022 12:13:24 +0100
Subject: [PATCH] Allow using the ObjectPoseClient plugin without being user

---
 .../plugins/ObjectPoseClientPlugin.cpp              | 13 ++++---------
 .../ArmarXObjects/plugins/ObjectPoseClientPlugin.h  | 11 ++++-------
 2 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseClientPlugin.cpp b/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseClientPlugin.cpp
index 2e59775c3..6525be6b5 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseClientPlugin.cpp
+++ b/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseClientPlugin.cpp
@@ -23,7 +23,7 @@ namespace armarx::plugins
 
     void ObjectPoseClientPlugin::preOnConnectComponent()
     {
-        parent<ObjectPoseClientPluginUser>().objectPoseStorage = createObjectPoseStorage();
+        _objectPoseStorage = createObjectPoseStorage();
     }
 
     objpose::ObjectPoseStorageInterfacePrx ObjectPoseClientPlugin::createObjectPoseStorage()
@@ -63,23 +63,18 @@ namespace armarx
 
     objpose::ObjectPoseClient ObjectPoseClientPluginUser::getClient() const
     {
-        return objpose::ObjectPoseClient(objectPoseStorage, getObjectFinder());
+        return plugin->createClient();
     }
 
 
     objpose::ObjectPoseSeq ObjectPoseClientPluginUser::getObjectPoses()
     {
-        if (!objectPoseStorage)
-        {
-            ARMARX_WARNING << "No object pose observer.";
-            return {};
-        }
-        return objpose::fromIce(objectPoseStorage->getObjectPoses());
+        return getClient().fetchObjectPoses();
     }
 
     objpose::ObjectPoseSeq ObjectPoseClientPluginUser::getObjectPosesByProvider(const std::string& providerName)
     {
-        return objpose::ObjectPoseClient(objectPoseStorage, getObjectFinder()).fetchObjectPosesFromProvider(providerName);
+        return getClient().fetchObjectPosesFromProvider(providerName);
     }
 
 
diff --git a/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseClientPlugin.h b/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseClientPlugin.h
index 229987238..7f27d9768 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseClientPlugin.h
+++ b/source/RobotAPI/libraries/ArmarXObjects/plugins/ObjectPoseClientPlugin.h
@@ -16,9 +16,7 @@ namespace armarx::plugins
 
         using ComponentPlugin::ComponentPlugin;
 
-        void postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) override;
         objpose::ObjectPoseStorageInterfacePrx createObjectPoseStorage();
-
         objpose::ObjectPoseClient createClient();
 
         template<class...Ts>
@@ -45,12 +43,15 @@ namespace armarx::plugins
 
     private:
 
+        void postCreatePropertyDefinitions(PropertyDefinitionsPtr& properties) override;
+
         void preOnInitComponent() override;
         void preOnConnectComponent() override;
 
         static constexpr const char* PROPERTY_NAME = "ObjectMemoryName";
 
         ObjectFinder _finder;
+        objpose::ObjectPoseStorageInterfacePrx _objectPoseStorage;
 
     };
 }
@@ -73,12 +74,8 @@ namespace armarx
 
         ObjectPoseClientPluginUser();
 
-        objpose::ObjectPoseStorageInterfacePrx createObjectPoseStorage();
-        objpose::ObjectPoseStorageInterfacePrx objectPoseStorage;
-
-
         objpose::ObjectPoseClient getClient() const;
-
+        objpose::ObjectPoseStorageInterfacePrx createObjectPoseStorage();
 
         objpose::ObjectPoseSeq getObjectPoses();
         objpose::ObjectPoseSeq getObjectPosesByProvider(const std::string& providerName);
-- 
GitLab