Bläddra i källkod

Throw an exception if a plugin with the same name and version is installed.

Sascha Zelzer 14 år sedan
förälder
incheckning
aa4e43a67a
1 ändrade filer med 8 tillägg och 0 borttagningar
  1. 8 0
      Libs/PluginFramework/ctkPluginPrivate.cpp

+ 8 - 0
Libs/PluginFramework/ctkPluginPrivate.cpp

@@ -222,6 +222,14 @@ void ctkPluginPrivate::checkManifestHeaders()
     }
   }
 
+  QSharedPointer<ctkPlugin> snp = fwCtx->plugins->getPlugin(symbolicName, version);
+  // TBD! Should we allow update to same version?
+  if (!snp.isNull() && snp->d_func() != this)
+  {
+    throw std::invalid_argument(std::string("Plugin with same symbolic name and version is already installed (")
+                                + symbolicName.toStdString() + ", " + version.toString().toStdString() + ")");
+  }
+
   QString ap = archive->getAttribute(ctkPluginConstants::PLUGIN_ACTIVATIONPOLICY);
   if (ctkPluginConstants::ACTIVATION_EAGER == ap)
   {