Przeglądaj źródła

Merge pull request #9047 from rpastrana/HPCC-16162-ProvideESDLServiceName

HPCC-16162 Parse out ESDLService name for UI consumption

Reviewed-By: Kevin Wang <kevin.wang@lexisnexis.com>
Reviewed-By: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 8 lat temu
rodzic
commit
3fa0de37ea

+ 2 - 0
esp/scm/ws_esdlconfig.ecm

@@ -41,6 +41,7 @@ ESPrequest [nil_remove] GetESDLDefinitionRequest
 ESPresponse [exceptions_inline] GetESDLDefinitionResponse
 {
     string Id;
+    [min_ver("1.2")] ESParray<string, Name> ESDLServices;
     string XMLDefinition;
     ESPstruct BaseESDLStatus status;
     ESParray<ESPStruct MethodConfig, Method> Methods;
@@ -106,6 +107,7 @@ ESPstruct ESDLDefinition
     int Seq;
     String Id;
     [min_ver("1.1")] String Interface;
+    [min_ver("1.2")] ESParray<string, Name> ESDLServices;
 };
 
 ESPStruct ESDLBindingContents

+ 68 - 17
esp/services/ws_esdlconfig/ws_esdlconfigservice.cpp

@@ -1422,34 +1422,58 @@ bool CWsESDLConfigEx::onGetESDLDefinition(IEspContext &context, IEspGetESDLDefin
     resp.setXMLDefinition(definition.str());
     if (ver >= 1.2)
     {
-        if (req.getReportMethodsAvailable())
+        if (definition.length() > 0)
         {
-            if (definition.length() > 0)
+            Owned<IPropertyTree> definitionTree = createPTreeFromXMLString(definition.str(), ipt_caseInsensitive);
+            if (req.getReportMethodsAvailable())
+            {
+                if (definitionTree)
+                {
+                    try
+                    {
+                        Owned<IPropertyTreeIterator> iter = definitionTree->getElements("EsdlMethod");
+                        IArrayOf<IEspMethodConfig> list;
+                        ForEach(*iter)
+                        {
+                            Owned<IEspMethodConfig> methodconfig = createMethodConfig("","");
+                            IPropertyTree &item = iter->query();
+                            methodconfig->setName(item.queryProp("@name"));
+                            list.append(*methodconfig.getClear());
+                        }
+                        resp.setMethods(list);
+                    }
+                    catch (...)
+                    {
+                        message.append("\nEncountered error while parsing fetching available methods");
+                    }
+                }
+                else
+                    message.append("\nCould not fetch available methods");
+            }
+
+            if (definitionTree)
             {
                 try
                 {
-                    Owned<IPropertyTree> definitionTree = createPTreeFromXMLString(definition.str(), ipt_caseInsensitive);
-                    Owned<IPropertyTreeIterator> iter = definitionTree->getElements("EsdlMethod");
-                    IArrayOf<IEspMethodConfig> list;
-                    ForEach(*iter)
+                    StringArray esdlServices;
+                    Owned<IPropertyTreeIterator> serviceiter = definitionTree->getElements("EsdlService");
+                    ForEach(*serviceiter)
                     {
-                        Owned<IEspMethodConfig> methodconfig = createMethodConfig("","");
-                        IPropertyTree &item = iter->query();
-                        methodconfig->setName(item.queryProp("@name"));
-                        list.append(*methodconfig.getClear());
+                        IPropertyTree &item = serviceiter->query();
+                        esdlServices.append(item.queryProp("@name"));
                     }
-                    resp.setMethods(list);
+                    resp.setESDLServices(esdlServices);
                 }
                 catch (...)
                 {
-                    message.append("\nEncountered error while parsing fetching available methods");
+                    message.append("\nEncountered error while parsing fetching EsdlServices");
                 }
             }
             else
-            {
-                message.append("\nCould not fetch available methods");
-            }
+                message.append("\nCould not fetch ESDLServices");
         }
+        else
+            message.append("\nCould not fetch ESDL services definition details");
     }
 
     resp.updateStatus().setCode(respcode);
@@ -1569,8 +1593,35 @@ bool CWsESDLConfigEx::onListDESDLEspBindings(IEspContext &context, IEspListDESDL
                         try
                         {
                             fetchESDLDefinitionFromDaliById(defid.toLowerCase(), definition);
-                            desdlespbinding->updateESDLBinding().updateDefinition().setInterface(definition.str());
-                            msg.append("\nFetched ESDL Biding definition.");
+                            if (definition.length() != 0)
+                            {
+                                desdlespbinding->updateESDLBinding().updateDefinition().setInterface(definition.str());
+                                msg.append("\nFetched ESDL Biding definition.");
+
+                                Owned<IPropertyTree> definitionTree = createPTreeFromXMLString(definition.str(), ipt_caseInsensitive);
+                                if (definitionTree)
+                                {
+                                    try
+                                    {
+                                        Owned<IPropertyTreeIterator> serviceiter = definitionTree->getElements("EsdlService");
+                                        StringArray esdlServices;
+                                        ForEach(*serviceiter)
+                                        {
+                                            IPropertyTree &item = serviceiter->query();
+                                            esdlServices.append(item.queryProp("@name"));
+                                        }
+                                        desdlespbinding->updateESDLBinding().updateDefinition().setESDLServices(esdlServices);
+                                    }
+                                    catch (...)
+                                    {
+                                        msg.append("\nEncountered error while parsing ");
+                                    }
+                                }
+                                else
+                                    msg.append("\nCould not parse ESDL Definition");
+                            }
+                            else
+                                msg.append("\nCould not fetch ESDL Definition");
                         }
                         catch (...)
                         {