]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
SHAPER : Put all catalogs, GEOM included into SALOME_ModuleCatalog_impl servant
authorAnthony Geay <anthony.geay@edf.fr>
Sat, 23 Jan 2021 05:37:10 +0000 (06:37 +0100)
committerAnthony Geay <anthony.geay@edf.fr>
Sat, 23 Jan 2021 05:37:10 +0000 (06:37 +0100)
src/KERNEL_PY/__init__.py
src/KERNEL_PY/salome_kernel.py
src/ModuleCatalog/KernelModuleCatalog.cxx
src/ModuleCatalog/KernelModuleCatalog.hxx
src/ModuleCatalog/KernelModuleCatalog.i
src/ModuleCatalog/SALOME_ModuleCatalog_impl.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_impl.hxx

index 5672776299e4589c2cad721304c190ba081876c4..0c2ef0238b97f906a70f4e5dc898458f77642b07 100644 (file)
@@ -225,7 +225,8 @@ def salome_init_without_session():
     orb=CORBA.ORB_init([''])
     import KernelModuleCatalog
     import SALOME_ModuleCatalog
-    modulcat = KernelModuleCatalog.myModuleCatalog()
+    from salome_kernel import list_of_catalogs_regarding_environement
+    modulcat = KernelModuleCatalog.myModuleCatalog( list_of_catalogs_regarding_environement() )
     # activate poaManager to accept co-localized CORBA calls.
     poa = orb.resolve_initial_references("RootPOA")
     poaManager = poa._get_the_POAManager()
index b07ed3fed427277a55740857f50a12574f93b829..b89627e3d9f089cf10aeb7fab6b61df6b1005555 100644 (file)
@@ -42,6 +42,22 @@ esm = None
 dsm = None
 modulcat = None
 
+def list_of_catalogs_regarding_environement():
+    """
+    Method to detect XML module catalogs regarding environement variables
+    """
+    import os
+    KEY_IN_ENV_VAR = "_ROOT_DIR"
+    modules_env_var = [elt for elt in os.environ.keys() if elt[-len(KEY_IN_ENV_VAR):]==KEY_IN_ENV_VAR]
+    list_catalogs = []
+    for module_env_var in modules_env_var:
+        module_upper_case = module_env_var[:-len(KEY_IN_ENV_VAR)]
+        file_candidate = os.path.join(os.environ[module_env_var],"share","salome","resources",module_upper_case.lower(),"{}Catalog.xml".format(module_upper_case))
+        if os.path.isfile(file_candidate):
+            list_catalogs.append(file_candidate)
+        pass
+    return list_catalogs
+
 def salome_kernel_init():
     global orb, lcc, naming_service, cm, esm, dsm, modulcat
     
index aa638baec77d8c8df9a83ea923d5a566873ee13c..bc9237306daf5f63f6ccae38f111ed532cb43123 100644 (file)
@@ -20,9 +20,9 @@
 #include "SALOME_ModuleCatalog_impl.hxx"
 #include "SALOME_KernelServices.hxx"
 
-std::string GetModuleCatalogInstance()
+std::string GetModuleCatalogInstance(const std::string& listOfCatalogsGrouped)
 {
-    SALOME_ModuleCatalog::ModuleCatalog_var study = KERNEL::getModuleComponentServantSA();
+    SALOME_ModuleCatalog::ModuleCatalog_var study = KERNEL::getModuleComponentServantSA(listOfCatalogsGrouped.c_str());
     CORBA::ORB_ptr orb = KERNEL::getORB();
     CORBA::String_var ior = orb->object_to_string(study);
     return std::string(ior.in());
index 5b7833168d2b31bef911c41784263400178659ec..c70aef514c389622a8f8bb64c08f1e822fd2239d 100644 (file)
@@ -19,4 +19,4 @@
 
 #include <string>
 
-std::string GetModuleCatalogInstance();
+std::string GetModuleCatalogInstance(const std::string& listOfCatalogsGrouped);
index b469622acd73cb304180f24eb03e10e5a486c937..d1905e930099aead7b41c614bd7f1a6fb73180c5 100644 (file)
 
 %inline
 {
-    std::string GetModuleCatalogInstance();
+    std::string GetModuleCatalogInstance(const std::string& listOfCatalogsGrouped);
 }
 
 %pythoncode %{
-def myModuleCatalog():
+def myModuleCatalog(listOfCatalogs):
   import SALOMEDS
   import CORBA
   orb=CORBA.ORB_init([''])
-  return orb.string_to_object(GetModuleCatalogInstance())
+  param = "::".join(["\"{}\"".format(elt) for elt in listOfCatalogs])
+  return orb.string_to_object(GetModuleCatalogInstance(param))
 %}
index 3f0c74dbe3569518098396b3a9801d12df7a0dc4..69f567a46fab7515e11109909dceef884be13bb7 100644 (file)
@@ -60,14 +60,17 @@ static int MYDEBUG = 0;
 static const char* SEPARATOR     = "::";
 static const char* OLD_SEPARATOR = ":";
 
-SALOME_ModuleCatalog::ModuleCatalog_ptr KERNEL::getModuleComponentServantSA()
+SALOME_ModuleCatalog::ModuleCatalog_ptr KERNEL::getModuleComponentServantSA(const char *listOfCatalogs)
 {
   static SALOME_ModuleCatalog::ModuleCatalog_var moduleCata;
   if(CORBA::is_nil(moduleCata))
   {
     CORBA::ORB_ptr orb = KERNEL::getORB();
-    char *argv[3] = {"SALOME_ModuleCatalog_Server",nullptr};
-    SALOME_ModuleCatalogImpl *servant = new SALOME_ModuleCatalogImpl(1,argv,orb);
+    constexpr int NB_OF_ELT_IN_CMD = 3;
+    char *argv[NB_OF_ELT_IN_CMD] = {"SALOME_ModuleCatalog_Server","-common",nullptr};
+    if(listOfCatalogs)
+      argv[2] = const_cast<char*>(listOfCatalogs);
+    SALOME_ModuleCatalogImpl *servant = new SALOME_ModuleCatalogImpl(NB_OF_ELT_IN_CMD,argv,orb);
     moduleCata = servant->_this();
   }
   return SALOME_ModuleCatalog::ModuleCatalog::_duplicate(moduleCata);
index c593914ca8333668aa0afddcde207d5a6627f25d..fbd260b29d82db7d6427b3c019054ad5b7de20a2 100644 (file)
@@ -44,7 +44,7 @@
 
 namespace KERNEL
 {
-  MODULECATALOG_EXPORT SALOME_ModuleCatalog::ModuleCatalog_ptr getModuleComponentServantSA();
+  MODULECATALOG_EXPORT SALOME_ModuleCatalog::ModuleCatalog_ptr getModuleComponentServantSA(const char *listOfCatalogs = nullptr);
 }
 
 class MODULECATALOG_EXPORT SALOME_ModuleCatalogImpl: public POA_SALOME_ModuleCatalog::ModuleCatalog