From 036d977b93c0dd2da752363be31e5616140be711 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@digia.com>
Date: Thu, 28 Mar 2013 14:53:12 +0100
Subject: [PATCH] RunConfigurationFactory: Centralize much of the restore code

Change-Id: I30c92dd5082eed050c2796a014919788710baafa
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
---
 src/plugins/android/androidrunfactories.cpp       | 13 +++----------
 src/plugins/android/androidrunfactories.h         |  4 ++--
 .../cmakeprojectmanager/cmakerunconfiguration.cpp | 13 ++++---------
 .../cmakeprojectmanager/cmakerunconfiguration.h   |  3 ++-
 src/plugins/madde/maemorunfactories.cpp           | 13 ++-----------
 src/plugins/madde/maemorunfactories.h             |  5 +++--
 src/plugins/projectexplorer/runconfiguration.cpp  | 12 ++++++++++++
 src/plugins/projectexplorer/runconfiguration.h    |  3 ++-
 .../qmlprojectrunconfigurationfactory.cpp         | 13 +++----------
 .../qmlprojectrunconfigurationfactory.h           |  3 ++-
 .../qnx/blackberryrunconfigurationfactory.cpp     | 14 +++-----------
 .../qnx/blackberryrunconfigurationfactory.h       |  6 ++++--
 src/plugins/qnx/qnxrunconfigurationfactory.cpp    | 15 ++++-----------
 src/plugins/qnx/qnxrunconfigurationfactory.h      |  4 ++--
 .../qt-desktop/qt4runconfiguration.cpp            | 12 +++---------
 .../qt-desktop/qt4runconfiguration.h              |  6 ++++--
 .../customexecutablerunconfiguration.cpp          | 11 +++--------
 .../qtsupport/customexecutablerunconfiguration.h  |  3 ++-
 .../remotelinuxrunconfigurationfactory.cpp        | 15 +++++----------
 .../remotelinuxrunconfigurationfactory.h          |  4 ++--
 20 files changed, 67 insertions(+), 105 deletions(-)

diff --git a/src/plugins/android/androidrunfactories.cpp b/src/plugins/android/androidrunfactories.cpp
index 210e4cce786..8b3b6a6b316 100644
--- a/src/plugins/android/androidrunfactories.cpp
+++ b/src/plugins/android/androidrunfactories.cpp
@@ -107,18 +107,11 @@ RunConfiguration *AndroidRunConfigurationFactory::doCreate(Target *parent, const
     return new AndroidRunConfiguration(parent, id, pathFromId(id));
 }
 
-RunConfiguration *AndroidRunConfigurationFactory::restore(Target *parent,
-    const QVariantMap &map)
+RunConfiguration *AndroidRunConfigurationFactory::doRestore(Target *parent,
+                                                            const QVariantMap &map)
 {
-    if (!canRestore(parent, map))
-        return 0;
     Core::Id id = ProjectExplorer::idFromMap(map);
-    AndroidRunConfiguration *rc = new AndroidRunConfiguration(parent, id, pathFromId(id));
-    if (rc->fromMap(map))
-        return rc;
-
-    delete rc;
-    return 0;
+    return new AndroidRunConfiguration(parent, id, pathFromId(id));
 }
 
 RunConfiguration *AndroidRunConfigurationFactory::clone(Target *parent, RunConfiguration *source)
diff --git a/src/plugins/android/androidrunfactories.h b/src/plugins/android/androidrunfactories.h
index c605e506b62..66f95f71931 100644
--- a/src/plugins/android/androidrunfactories.h
+++ b/src/plugins/android/androidrunfactories.h
@@ -56,12 +56,10 @@ public:
     bool canCreate(ProjectExplorer::Target *parent, const Core::Id id) const;
 
     bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
-    ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map);
 
     bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const;
     ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source);
 
-    bool canHandle(ProjectExplorer::Target *t) const;
     QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Target *t,
                                                                         ProjectExplorer::Node *n);
 
@@ -69,6 +67,8 @@ private:
     bool canHandle(ProjectExplorer::Target *t) const;
 
     ProjectExplorer::RunConfiguration *doCreate(ProjectExplorer::Target *parent, const Core::Id id);
+    ProjectExplorer::RunConfiguration *doRestore(ProjectExplorer::Target *parent,
+                                                 const QVariantMap &map);
 };
 
 class AndroidRunControlFactory : public ProjectExplorer::IRunControlFactory
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index 1f834cca491..0772632c9a4 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -544,16 +544,11 @@ bool CMakeRunConfigurationFactory::canRestore(ProjectExplorer::Target *parent, c
     return ProjectExplorer::idFromMap(map).name().startsWith(CMAKE_RC_PREFIX);
 }
 
-ProjectExplorer::RunConfiguration *CMakeRunConfigurationFactory::restore(ProjectExplorer::Target *parent, const QVariantMap &map)
+ProjectExplorer::RunConfiguration *CMakeRunConfigurationFactory::doRestore(ProjectExplorer::Target *parent,
+                                                                           const QVariantMap &map)
 {
-    if (!canRestore(parent, map))
-        return 0;
-    CMakeRunConfiguration *rc(new CMakeRunConfiguration(parent, ProjectExplorer::idFromMap(map),
-                                                        QString(), QString(), QString()));
-    if (rc->fromMap(map))
-        return rc;
-    delete rc;
-    return 0;
+    return new CMakeRunConfiguration(parent, ProjectExplorer::idFromMap(map),
+                                     QString(), QString(), QString());
 }
 
 QString CMakeRunConfigurationFactory::buildTargetFromId(Core::Id id)
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
index ab7728b8ac2..5694e9ccfa4 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
@@ -163,7 +163,6 @@ public:
 
     bool canCreate(ProjectExplorer::Target *parent, const Core::Id id) const;
     bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
-    ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map);
     bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *product) const;
     ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *product);
 
@@ -177,6 +176,8 @@ private:
     bool canHandle(ProjectExplorer::Target *parent) const;
 
     ProjectExplorer::RunConfiguration *doCreate(ProjectExplorer::Target *parent, const Core::Id id);
+    ProjectExplorer::RunConfiguration *doRestore(ProjectExplorer::Target *parent,
+                                                 const QVariantMap &map);
 };
 
 }
diff --git a/src/plugins/madde/maemorunfactories.cpp b/src/plugins/madde/maemorunfactories.cpp
index d0cd8cfe042..d675fb543b3 100644
--- a/src/plugins/madde/maemorunfactories.cpp
+++ b/src/plugins/madde/maemorunfactories.cpp
@@ -137,20 +137,11 @@ RunConfiguration *MaemoRunConfigurationFactory::doCreate(Target *parent, const C
     return new MaemoRunConfiguration(parent, id, pathFromId(id));
 }
 
-RunConfiguration *MaemoRunConfigurationFactory::restore(Target *parent,
+RunConfiguration *MaemoRunConfigurationFactory::doRestore(Target *parent,
     const QVariantMap &map)
 {
-    if (!canRestore(parent, map))
-        return 0;
-
     Core::Id id = ProjectExplorer::idFromMap(map);
-    MaemoRunConfiguration *rc
-        = new MaemoRunConfiguration(parent, id, pathFromId(id));
-    if (rc->fromMap(map))
-        return rc;
-
-    delete rc;
-    return 0;
+    return new MaemoRunConfiguration(parent, id, pathFromId(id));
 }
 
 RunConfiguration *MaemoRunConfigurationFactory::clone(Target *parent, RunConfiguration *source)
diff --git a/src/plugins/madde/maemorunfactories.h b/src/plugins/madde/maemorunfactories.h
index 2d04db7133f..ce7782fb86b 100644
--- a/src/plugins/madde/maemorunfactories.h
+++ b/src/plugins/madde/maemorunfactories.h
@@ -61,17 +61,18 @@ public:
     bool canCreate(Target *parent, const Core::Id id) const;
 
     bool canRestore(Target *parent, const QVariantMap &map) const;
-    RunConfiguration *restore(Target *parent, const QVariantMap &map);
 
     bool canClone(Target *parent, RunConfiguration *source) const;
     RunConfiguration *clone(Target *parent, RunConfiguration *source);
 
-    bool canHandle(ProjectExplorer::Target *t) const;
     QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Target *t,
                                                                         ProjectExplorer::Node *n);
 
 private:
+    bool canHandle(ProjectExplorer::Target *t) const;
+
     RunConfiguration *doCreate(Target *parent, const Core::Id id);
+    RunConfiguration *doRestore(Target *parent, const QVariantMap &map);
 };
 
 class MaemoRunControlFactory : public IRunControlFactory
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 361070aa5c4..8d36b864dcc 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -462,6 +462,18 @@ RunConfiguration *IRunConfigurationFactory::create(Target *parent, const Core::I
     return rc;
 }
 
+RunConfiguration *IRunConfigurationFactory::restore(Target *parent, const QVariantMap &map)
+{
+    if (!canRestore(parent, map))
+        return 0;
+    RunConfiguration *rc = doRestore(parent, map);
+    if (!rc->fromMap(map)) {
+        delete rc;
+        rc = 0;
+    }
+    return rc;
+}
+
 IRunConfigurationFactory *IRunConfigurationFactory::find(Target *parent, const QVariantMap &map)
 {
     QList<IRunConfigurationFactory *> factories
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index 8c143d3ebad..d7fc7524773 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -216,7 +216,7 @@ public:
     virtual bool canCreate(Target *parent, const Core::Id id) const = 0;
     RunConfiguration *create(Target *parent, const Core::Id id);
     virtual bool canRestore(Target *parent, const QVariantMap &map) const = 0;
-    virtual RunConfiguration *restore(Target *parent, const QVariantMap &map) = 0;
+    RunConfiguration *restore(Target *parent, const QVariantMap &map);
     virtual bool canClone(Target *parent, RunConfiguration *product) const = 0;
     virtual RunConfiguration *clone(Target *parent, RunConfiguration *product) = 0;
 
@@ -229,6 +229,7 @@ signals:
 
 private:
     virtual RunConfiguration *doCreate(Target *parent, const Core::Id id) = 0;
+    virtual RunConfiguration *doRestore(Target *parent, const QVariantMap &map) = 0;
 };
 
 class RunConfigWidget;
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.cpp
index 2cfa65fd24e..b1d08176691 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.cpp
@@ -120,17 +120,10 @@ bool QmlProjectRunConfigurationFactory::canRestore(ProjectExplorer::Target *pare
     return parent && canCreate(parent, ProjectExplorer::idFromMap(map));
 }
 
-ProjectExplorer::RunConfiguration *QmlProjectRunConfigurationFactory::restore(ProjectExplorer::Target *parent, const QVariantMap &map)
+ProjectExplorer::RunConfiguration *QmlProjectRunConfigurationFactory::doRestore(ProjectExplorer::Target *parent,
+                                                                                const QVariantMap &map)
 {
-    if (!canRestore(parent, map))
-        return 0;
-
-    Core::Id id = ProjectExplorer::idFromMap(map);
-    QmlProjectRunConfiguration *rc = new QmlProjectRunConfiguration(parent, id);
-    if (rc->fromMap(map))
-        return rc;
-    delete rc;
-    return 0;
+    return new QmlProjectRunConfiguration(parent, ProjectExplorer::idFromMap(map));
 }
 
 bool QmlProjectRunConfigurationFactory::canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.h
index f2b3e500a1b..a0d61f2ab44 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfigurationfactory.h
@@ -48,7 +48,6 @@ public:
 
     bool canCreate(ProjectExplorer::Target *parent, const Core::Id id) const;
     bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
-    ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map);
     bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const;
     ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source);
 
@@ -56,6 +55,8 @@ private:
     bool canHandle(ProjectExplorer::Target *parent) const;
 
     ProjectExplorer::RunConfiguration *doCreate(ProjectExplorer::Target *parent, const Core::Id id);
+    ProjectExplorer::RunConfiguration *doRestore(ProjectExplorer::Target *parent,
+                                                 const QVariantMap &map);
 };
 
 } // namespace Internal
diff --git a/src/plugins/qnx/blackberryrunconfigurationfactory.cpp b/src/plugins/qnx/blackberryrunconfigurationfactory.cpp
index 84f1dc79267..dd1602a1fbd 100644
--- a/src/plugins/qnx/blackberryrunconfigurationfactory.cpp
+++ b/src/plugins/qnx/blackberryrunconfigurationfactory.cpp
@@ -110,20 +110,12 @@ bool BlackBerryRunConfigurationFactory::canRestore(ProjectExplorer::Target *pare
     return ProjectExplorer::idFromMap(map).name().startsWith(Constants::QNX_BB_RUNCONFIGURATION_PREFIX);
 }
 
-ProjectExplorer::RunConfiguration *BlackBerryRunConfigurationFactory::restore(
+ProjectExplorer::RunConfiguration *BlackBerryRunConfigurationFactory::doRestore(
         ProjectExplorer::Target *parent,
         const QVariantMap &map)
 {
-    if (!canRestore(parent, map))
-        return 0;
-
-    ProjectExplorer::RunConfiguration *rc = 0;
-    rc = new BlackBerryRunConfiguration(parent, Core::Id(Constants::QNX_BB_RUNCONFIGURATION_PREFIX), QString());
-    if (rc->fromMap(map))
-        return rc;
-
-    delete rc;
-    return 0;
+    Q_UNUSED(map);
+    return new BlackBerryRunConfiguration(parent, Core::Id(Constants::QNX_BB_RUNCONFIGURATION_PREFIX), QString());
 }
 
 bool BlackBerryRunConfigurationFactory::canClone(ProjectExplorer::Target *parent,
diff --git a/src/plugins/qnx/blackberryrunconfigurationfactory.h b/src/plugins/qnx/blackberryrunconfigurationfactory.h
index 2d38bcd401c..5dd363f2704 100644
--- a/src/plugins/qnx/blackberryrunconfigurationfactory.h
+++ b/src/plugins/qnx/blackberryrunconfigurationfactory.h
@@ -50,14 +50,16 @@ public:
     ProjectExplorer::RunConfiguration *doCreate(ProjectExplorer::Target *parent, const Core::Id id);
 
     bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
-    ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent,
-                                               const QVariantMap &map);
 
     bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const;
     ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent,
                                              ProjectExplorer::RunConfiguration *source);
 
+private:
     bool canHandle(ProjectExplorer::Target *t) const;
+
+    ProjectExplorer::RunConfiguration *doRestore(ProjectExplorer::Target *parent,
+                                                 const QVariantMap &map);
 };
 
 } // namespace Internal
diff --git a/src/plugins/qnx/qnxrunconfigurationfactory.cpp b/src/plugins/qnx/qnxrunconfigurationfactory.cpp
index 81c53104390..42fb3263551 100644
--- a/src/plugins/qnx/qnxrunconfigurationfactory.cpp
+++ b/src/plugins/qnx/qnxrunconfigurationfactory.cpp
@@ -103,18 +103,11 @@ bool QnxRunConfigurationFactory::canRestore(ProjectExplorer::Target *parent, con
             && ProjectExplorer::idFromMap(map).name().startsWith(Constants::QNX_QNX_RUNCONFIGURATION_PREFIX);
 }
 
-ProjectExplorer::RunConfiguration *QnxRunConfigurationFactory::restore(ProjectExplorer::Target *parent, const QVariantMap &map)
+ProjectExplorer::RunConfiguration *QnxRunConfigurationFactory::doRestore(ProjectExplorer::Target *parent,
+                                                                         const QVariantMap &map)
 {
-    if (!canRestore(parent, map))
-        return 0;
-
-    ProjectExplorer::RunConfiguration *rc = 0;
-    rc = new QnxRunConfiguration(parent, Core::Id(Constants::QNX_QNX_RUNCONFIGURATION_PREFIX), QString());
-    if (rc->fromMap(map))
-        return rc;
-
-    delete rc;
-    return 0;
+    Q_UNUSED(map);
+    return new QnxRunConfiguration(parent, Core::Id(Constants::QNX_QNX_RUNCONFIGURATION_PREFIX), QString());
 }
 
 bool QnxRunConfigurationFactory::canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const
diff --git a/src/plugins/qnx/qnxrunconfigurationfactory.h b/src/plugins/qnx/qnxrunconfigurationfactory.h
index f74559da4aa..56abf5e7eb2 100644
--- a/src/plugins/qnx/qnxrunconfigurationfactory.h
+++ b/src/plugins/qnx/qnxrunconfigurationfactory.h
@@ -49,8 +49,6 @@ public:
     bool canCreate(ProjectExplorer::Target *parent, const Core::Id id) const;
 
     bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
-    ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent,
-                                               const QVariantMap &map);
 
     bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const;
     ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent,
@@ -60,6 +58,8 @@ private:
     bool canHandle(ProjectExplorer::Target *t) const;
 
     ProjectExplorer::RunConfiguration *doCreate(ProjectExplorer::Target *parent, const Core::Id id);
+    ProjectExplorer::RunConfiguration *doRestore(ProjectExplorer::Target *parent,
+                                                 const QVariantMap &map);
 };
 
 } // namespace Internal
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
index b6f2c53f9ba..55ab79ee374 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.cpp
@@ -757,16 +757,10 @@ bool Qt4RunConfigurationFactory::canRestore(ProjectExplorer::Target *parent, con
     return ProjectExplorer::idFromMap(map).toString().startsWith(QLatin1String(QT4_RC_PREFIX));
 }
 
-ProjectExplorer::RunConfiguration *Qt4RunConfigurationFactory::restore(ProjectExplorer::Target *parent, const QVariantMap &map)
+ProjectExplorer::RunConfiguration *Qt4RunConfigurationFactory::doRestore(ProjectExplorer::Target *parent,
+                                                                         const QVariantMap &map)
 {
-    if (!canRestore(parent, map))
-        return 0;
-    Qt4RunConfiguration *rc = new Qt4RunConfiguration(parent, ProjectExplorer::idFromMap(map));
-    if (rc->fromMap(map))
-        return rc;
-
-    delete rc;
-    return 0;
+    return new Qt4RunConfiguration(parent, ProjectExplorer::idFromMap(map));
 }
 
 bool Qt4RunConfigurationFactory::canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.h
index 7b07c9c62b9..2e5e5184b7e 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4runconfiguration.h
@@ -214,19 +214,21 @@ public:
 
     bool canCreate(ProjectExplorer::Target *parent, const Core::Id id) const;
     bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
-    ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map);
     bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const;
     ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source);
 
     QList<Core::Id> availableCreationIds(ProjectExplorer::Target *parent) const;
     QString displayNameForId(const Core::Id id) const;
 
-    bool canHandle(ProjectExplorer::Target *t) const;
     QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Target *t,
                                                                         ProjectExplorer::Node *n);
 
 private:
+    bool canHandle(ProjectExplorer::Target *t) const;
+
     ProjectExplorer::RunConfiguration *doCreate(ProjectExplorer::Target *parent, const Core::Id id);
+    ProjectExplorer::RunConfiguration *doRestore(ProjectExplorer::Target *parent,
+                                                 const QVariantMap &map);
 };
 
 } // namespace Internal
diff --git a/src/plugins/qtsupport/customexecutablerunconfiguration.cpp b/src/plugins/qtsupport/customexecutablerunconfiguration.cpp
index 3f5c0b8ee5a..807488aa6e7 100644
--- a/src/plugins/qtsupport/customexecutablerunconfiguration.cpp
+++ b/src/plugins/qtsupport/customexecutablerunconfiguration.cpp
@@ -416,15 +416,10 @@ bool CustomExecutableRunConfigurationFactory::canRestore(ProjectExplorer::Target
 }
 
 ProjectExplorer::RunConfiguration *
-CustomExecutableRunConfigurationFactory::restore(ProjectExplorer::Target *parent, const QVariantMap &map)
+CustomExecutableRunConfigurationFactory::doRestore(ProjectExplorer::Target *parent, const QVariantMap &map)
 {
-    if (!canRestore(parent, map))
-        return 0;
-    CustomExecutableRunConfiguration *rc(new CustomExecutableRunConfiguration(parent));
-    if (rc->fromMap(map))
-        return rc;
-    delete rc;
-    return 0;
+    Q_UNUSED(map);
+    return new CustomExecutableRunConfiguration(parent);
 }
 
 bool CustomExecutableRunConfigurationFactory::canClone(ProjectExplorer::Target *parent,
diff --git a/src/plugins/qtsupport/customexecutablerunconfiguration.h b/src/plugins/qtsupport/customexecutablerunconfiguration.h
index 64b175d76c2..312c6c04a04 100644
--- a/src/plugins/qtsupport/customexecutablerunconfiguration.h
+++ b/src/plugins/qtsupport/customexecutablerunconfiguration.h
@@ -139,7 +139,6 @@ public:
 
     bool canCreate(ProjectExplorer::Target *parent, const Core::Id id) const;
     bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
-    ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map);
     bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *product) const;
     ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent,
                                              ProjectExplorer::RunConfiguration *source);
@@ -148,6 +147,8 @@ private:
     bool canHandle(ProjectExplorer::Target *parent) const;
 
     ProjectExplorer::RunConfiguration *doCreate(ProjectExplorer::Target *parent, const Core::Id id);
+    ProjectExplorer::RunConfiguration *doRestore(ProjectExplorer::Target *parent,
+                                                 const QVariantMap &map);
 };
 
 } // namespace QtSupport
diff --git a/src/plugins/remotelinux/remotelinuxrunconfigurationfactory.cpp b/src/plugins/remotelinux/remotelinuxrunconfigurationfactory.cpp
index cd220fc53af..015a2ea6d05 100644
--- a/src/plugins/remotelinux/remotelinuxrunconfigurationfactory.cpp
+++ b/src/plugins/remotelinux/remotelinuxrunconfigurationfactory.cpp
@@ -110,17 +110,12 @@ RunConfiguration *RemoteLinuxRunConfigurationFactory::doCreate(Target *parent, c
     return new RemoteLinuxRunConfiguration(parent, id, pathFromId(id));
 }
 
-RunConfiguration *RemoteLinuxRunConfigurationFactory::restore(Target *parent,
-    const QVariantMap &map)
+RunConfiguration *RemoteLinuxRunConfigurationFactory::doRestore(Target *parent,
+                                                                const QVariantMap &map)
 {
-    QTC_ASSERT(canRestore(parent, map), return 0);
-    RemoteLinuxRunConfiguration *rc = new RemoteLinuxRunConfiguration(parent,
-            Core::Id(RemoteLinuxRunConfiguration::IdPrefix), QString());
-    if (rc->fromMap(map))
-        return rc;
-
-    delete rc;
-    return 0;
+    Q_UNUSED(map);
+    return new RemoteLinuxRunConfiguration(parent,
+                                           Core::Id(RemoteLinuxRunConfiguration::IdPrefix), QString());
 }
 
 RunConfiguration *RemoteLinuxRunConfigurationFactory::clone(Target *parent,
diff --git a/src/plugins/remotelinux/remotelinuxrunconfigurationfactory.h b/src/plugins/remotelinux/remotelinuxrunconfigurationfactory.h
index bca5608bef6..33099be6310 100644
--- a/src/plugins/remotelinux/remotelinuxrunconfigurationfactory.h
+++ b/src/plugins/remotelinux/remotelinuxrunconfigurationfactory.h
@@ -48,8 +48,6 @@ public:
     bool canCreate(ProjectExplorer::Target *parent, const Core::Id id) const;
 
     bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
-    ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent,
-        const QVariantMap &map);
 
     bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const;
     ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent,
@@ -59,6 +57,8 @@ private:
     bool canHandle(const ProjectExplorer::Target *target) const;
 
     ProjectExplorer::RunConfiguration *doCreate(ProjectExplorer::Target *parent, const Core::Id id);
+    ProjectExplorer::RunConfiguration *doRestore(ProjectExplorer::Target *parent,
+                                                 const QVariantMap &map);
 };
 
 } // namespace Internal
-- 
GitLab