Ignore:
Timestamp:
Aug 16, 2018, 8:00:56 AM (6 years ago)
Author:
djay
Message:

Fixes for supporting properly the memory=protect which force the ZOO-Kernel to not store any downloaded files in memory. Add footer to the HPC support. Fix the autotools to build service_json and sshapi only when required so, when HPC support is activated, this also avoid adding too much dependencies at compilation time. Store md5 of the downloaded files to avoid uploading on HPC server the same file more than once, in case the md5 correspond.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/prototype-v0/zoo-project/zoo-kernel/response_print.c

    r872 r877  
    693693    tmp1=serv->metadata;
    694694
    695     addMetadata(tmp1,doc,nc1,ns_ows,ns_xlink);
     695    addMetadata(tmp1,doc,nc1,ns_ows,ns_xlink,vid);
    696696    tmp1=serv->additional_parameters;
    697697    int fromDb=-1;
     
    750750 * @param ns_ows the OWS namespace
    751751 * @param ns_xlink the xlink namespace
    752  */
    753 void addMetadata(map* meta,xmlDocPtr doc,xmlNodePtr nc,xmlNsPtr ns_ows,xmlNsPtr ns_xlink){
     752 * @param vid the version of WPS to use (0 for 1.0.0 and 1 for 2.0)
     753 */
     754void addMetadata(map* meta,xmlDocPtr doc,xmlNodePtr nc,xmlNsPtr ns_ows,xmlNsPtr ns_xlink,int vid){
    754755    int hasTitle=-1;
    755756    int hasValue=-1;
     
    757758    map* oMeta=meta;
    758759    int isAdditionalParameters=-1;
    759     //if(count(oMeta)>=2){
    760760    int level=0;
    761761    map* test=getMap(meta,"title");
     
    770770    if(count(oMeta)>level+1)
    771771      isAdditionalParameters=1;
    772     //}
    773772    char *ctitle=NULL;
    774773    while(meta!=NULL){
     
    815814      meta=meta->next;
    816815      if(hasTitle<0){
    817         if(isAdditionalParameters)
    818           xmlAddChild(nc,nc1);
    819816        hasValue=1;
     817        if(isAdditionalParameters){
     818          if(vid==0){
     819            meta=NULL;
     820            break;
     821          }else
     822            xmlAddChild(nc,nc1);
     823        }
    820824      }
    821825    }
     
    10491053    tmp1=serv->metadata;
    10501054    while(tmp1!=NULL){
    1051       addMetadata(tmp1,doc,nc,ns_ows,ns_xlink);
    1052       /*nc1 = xmlNewNode(ns_ows, BAD_CAST "Metadata");
    1053       xmlNewNsProp(nc1,ns_xlink,BAD_CAST tmp1->name,BAD_CAST tmp1->value);
    1054       xmlAddChild(nc,nc1);*/
     1055      addMetadata(tmp1,doc,nc,ns_ows,ns_xlink,vid);
    10551056      tmp1=tmp1->next;
    10561057    }
     
    10631064  }else{
    10641065    tmp1=serv->metadata;
    1065     addMetadata(tmp1,doc,nc,ns_ows,ns_xlink);
     1066    addMetadata(tmp1,doc,nc,ns_ows,ns_xlink,vid);
    10661067    addInheritedMetadata(nc,ns_ows,ns_xlink,reg,m,serv);
    10671068    tmp1=serv->additional_parameters;
    1068     addAdditionalParameters(tmp1,doc,nc,ns_ows,ns_xlink,fromDb);
     1069    if(vid!=0)
     1070      addAdditionalParameters(tmp1,doc,nc,ns_ows,ns_xlink,fromDb);
    10691071  }
    10701072
     
    11261128    int isAnyValue=1;
    11271129    nc2 = xmlNewNode(NULL, BAD_CAST type);
     1130    // Extract min/max Occurence information
    11281131    if(strstr(type,"Input")!=NULL){
    11291132      tmp1=getMap(e->content,"minOccurs");
     
    11681171      //Build the (Literal/Complex/BoundingBox)Data node
    11691172      if(strncmp(type,"Output",6)==0){
    1170         if(strncasecmp(e->format,"LITERALDATA",strlen(e->format))==0)
     1173        if(strncasecmp(e->format,"LITERAL",7)==0)
    11711174          nc3 = xmlNewNode(ns1, BAD_CAST "LiteralOutput");
    11721175        else if(strncasecmp(e->format,"COMPLEXDATA",strlen(e->format))==0)
     
    12141217                strcmp(e->format,"BoundingBoxData")==0){
    12151218          datatype=2;
    1216           nc5 = xmlNewNode(NULL, BAD_CAST "Default");
     1219          if(vid==0)
     1220            nc5 = xmlNewNode(NULL, BAD_CAST "Default");
     1221          else{
     1222            xmlNodePtr nc6 = xmlNewNode(ns1, BAD_CAST "Format");
     1223            xmlNewProp(nc6,BAD_CAST "mimeType",BAD_CAST "text/xml");
     1224            xmlNewProp(nc6,BAD_CAST "default",BAD_CAST "true");
     1225            xmlAddChild(nc3,nc6);
     1226            nc5 = xmlNewNode(NULL, BAD_CAST "SupportedCRS");
     1227          }
    12171228        }
    12181229        else{
     
    14241435                 strncasecmp(tmp1->name,"range",5)!=0){
    14251436                if(datatype!=1){
    1426                   char *tmp2=zCapitalize1(tmp1->name);
    1427                   nc9 = xmlNewNode(NULL, BAD_CAST tmp2);
    1428                   free(tmp2);
     1437                  if(datatype==2 && vid==1){
     1438                    nc9 = xmlNewNode(ns, BAD_CAST "SupportedCRS");
     1439                    xmlNewProp(nc9,BAD_CAST "default",BAD_CAST "true");
     1440                  }
     1441                  else{
     1442                    char *tmp2=zCapitalize1(tmp1->name);
     1443                    nc9 = xmlNewNode(NULL, BAD_CAST tmp2);
     1444                    free(tmp2);
     1445                  }
    14291446                }
    14301447                else{
     
    14351452                xmlAddChild(nc9,xmlNewText(BAD_CAST tmp1->value));
    14361453                if(vid==0 || oI>=3){
    1437                   if(vid==0 || oI!=4)
    1438                     xmlAddChild(nc5,nc9);
     1454                  if(vid==0 || oI!=4){
     1455                    if(datatype==2 && vid==1)
     1456                      xmlAddChild(nc3,nc9);
     1457                    else
     1458                      xmlAddChild(nc5,nc9);
     1459                  }
    14391460                  if(oI==4 && vid==1){
    14401461                    xmlNewProp(nc9,BAD_CAST "default",BAD_CAST "true");
     
    14471468                  hasUOM1=true;
    14481469                hasUOM=true;
    1449               }else       
    1450                 tmp1=tmp1->next;
     1470              }
    14511471            }
    14521472        }
     
    14631483          }else{
    14641484            if(hasUOM1==false && vid==0){
    1465               xmlFreeNode(nc5);
     1485              if(nc5!=NULL)
     1486                xmlFreeNode(nc5);
    14661487              if(datatype==1){
    14671488                xmlFreeNode(nc4);
    14681489              }
    14691490            }
    1470             else
     1491            else{
    14711492              xmlAddChild(nc3,nc5);
     1493            }
    14721494          }
    14731495        }else{
    1474           xmlAddChild(nc3,nc5);
     1496          if(vid==0)
     1497            xmlAddChild(nc3,nc5);
     1498          else
     1499            xmlFreeNode(nc5);
    14751500        }
    14761501     
    1477         if(datatype!=1 && default1<0){
     1502        if(datatype==0 && default1<0){
    14781503          xmlFreeNode(nc5);
    14791504          if(datatype!=2){
     
    15301555              nc9 = xmlNewNode(ns_ows, BAD_CAST tmp2);
    15311556              free(tmp2);
    1532               //xmlNewProp(nc9, BAD_CAST "default", BAD_CAST "true");
    15331557              xmlAddChild(nc9,xmlNewText(BAD_CAST tmp1->value));
    15341558              xmlAddChild(nc5,nc9);
    1535               /*struct iotype * _ltmp=e->supported;
    1536                 while(_ltmp!=NULL){
    1537                 tmp1=getMap(_ltmp->content,"uom");
    1538                 if(tmp1!=NULL){
    1539                 char *tmp2=zCapitalize(tmp1->name);
    1540                 nc9 = xmlNewNode(ns_ows, BAD_CAST tmp2);
    1541                 free(tmp2);
    1542                 xmlAddChild(nc9,xmlNewText(BAD_CAST tmp1->value));
    1543                 xmlAddChild(nc5,nc9);
    1544                 }
    1545                 _ltmp=_ltmp->next;
    1546                 }*/
    1547            
    15481559            }
    15491560          }
     
    15601571        xmlNsPtr ns_xlink=usedNs[xlinkId];
    15611572
    1562         //dumpMap(metadata);
    1563         addMetadata(metadata,doc,nc2,ns_ows,ns_xlink);
    1564         addAdditionalParameters(e->additional_parameters,doc,nc2,ns_ows,ns_xlink,fromDb);
     1573        addMetadata(metadata,doc,nc2,ns_ows,ns_xlink,vid);
     1574        if(vid!=0)
     1575          addAdditionalParameters(e->additional_parameters,doc,nc2,ns_ows,ns_xlink,fromDb);
    15651576
    15661577      }
    15671578
    15681579      _tmp=e->supported;
    1569       if(_tmp==NULL && datatype!=1)
     1580      if(_tmp==NULL && datatype==0)
    15701581        _tmp=e->defaults;
    15711582
     
    16131624               strcasecmp(tmp1->name,"extension")!=0){
    16141625              if(datatype!=1){
    1615                 char *tmp2=zCapitalize1(tmp1->name);
    1616                 nc6 = xmlNewNode(NULL, BAD_CAST tmp2);
    1617                 free(tmp2);
     1626                if(datatype==2 && vid==1){
     1627                  nc6 = xmlNewNode(ns, BAD_CAST "SupportedCRS");
     1628                }
     1629                else{
     1630                  char *tmp2=zCapitalize1(tmp1->name);
     1631                  nc6 = xmlNewNode(NULL, BAD_CAST tmp2);
     1632                  free(tmp2);
     1633                }
    16181634              }
    16191635              else{
     
    16391655              }
    16401656              if(vid==0 || oI>=3){
    1641                 if(vid==0 || oI!=4)
    1642                   xmlAddChild(nc5,nc6);
     1657                if(vid==0 || oI!=4){
     1658                  if(datatype==2 && vid==1)
     1659                    xmlAddChild(nc3,nc6);
     1660                  else
     1661                    xmlAddChild(nc5,nc6);
     1662                }
    16431663                else{
    16441664                  xmlFreeNode(nc6);
     
    16581678            }
    16591679            else{
    1660               xmlAddChild(nc3,nc5);
     1680              if(datatype!=2)
     1681                xmlAddChild(nc3,nc5);
    16611682            }
    16621683
    16631684          }else{
    1664             if(datatype!=1)
     1685            if(datatype==2 && vid==0)
    16651686              xmlAddChild(nc3,nc5);
    16661687          }
     
    16781699          }
    16791700          else
    1680             if(datatype!=1){
     1701            if(datatype==0){
    16811702              xmlFreeNode(nc4);
    16821703              xmlAddChild(nc3,nc5);
     
    17131734      xmlAddChild(nc2,nc3);
    17141735    }else{
    1715       if(e->child!=NULL){
    1716         if(e->child!=NULL && vid!=0){
    1717           printFullDescription(doc,in,e->child,type,ns,ns_ows,nc2,vid,fromDb,NULL);
    1718         }
     1736      if(e->child!=NULL && vid!=0){
     1737        printFullDescription(doc,in,e->child,type,ns,ns_ows,nc2,vid,fromDb,NULL);
    17191738      }
    17201739    }
    17211740    if(e->child!=NULL && vid==0){
    1722       xmlFreeNode(nc3);
    17231741      elements* children=dupElements(e->child);
    17241742      elements* cursor=children;
    17251743      while(cursor!=NULL){
    1726         char* tmp=strdup(cursor->name);
    1727         free(cursor->name);
    1728         cursor->name=(char*)malloc((strlen(tmp)+strlen(e->name)+2)*sizeof(char));
    1729         sprintf(cursor->name,"%s.%s",e->name,tmp);
     1744        elements* ccursor=cursor;
     1745        char* tmp=strdup(ccursor->name);
     1746        free(ccursor->name);
     1747        ccursor->name=(char*)malloc((strlen(tmp)+strlen(e->name)+2)*sizeof(char));
     1748        sprintf(ccursor->name,"%s.%s",e->name,tmp);
    17301749        cursor=cursor->next;
    17311750      }
    1732       printFullDescription(doc,in,children,type,ns,ns_ows,nc2,vid,fromDb,serviceType);
    1733       xmlAddChild(nc1,nc2);
     1751      printFullDescription(doc,in,children,type,ns,ns_ows,nc1,vid,fromDb,serviceType);
    17341752      freeElements(&children);
    17351753      free(children);
    1736     }else
    1737       xmlAddChild(nc1,nc2);
     1754    }else{
     1755      if(nc2!=NULL){
     1756        xmlAddChild(nc1,nc2);
     1757      }
     1758    }
    17381759    e=e->next;
    17391760  }
     
    19661987      nc = xmlNewNode(ns, BAD_CAST "ProcessOutputs");
    19671988    }
     1989    //dumpMaps(outputs);
    19681990    maps* mcursor=outputs;
    19691991    elements* scursor=serv->outputs;
     
    19771999        if(testResponse==NULL || tmp0==NULL){
    19782000          if(vid==0)
    1979             printIOType(doc,nc,ns,ns_ows,ns_xlink,scursor,mcursor,"Output",vid);
     2001              printIOType(doc,nc,ns,ns_ows,ns_xlink,scursor,mcursor,"Output",vid);
    19802002          else
    1981             printIOType(doc,n,ns,ns_ows,ns_xlink,scursor,mcursor,"Output",vid);
     2003              printIOType(doc,n,ns,ns_ows,ns_xlink,scursor,mcursor,"Output",vid);
    19822004        }
    19832005        else
    1984 
    19852006          if(tmp0!=NULL && strncmp(tmp0->value,"true",4)==0){
    19862007            if(vid==0)
     
    20582079#endif
    20592080  }
     2081
    20602082  printDocument(m,doc,pid);
    20612083
     
    26992721    return;
    27002722  }
     2723
     2724  if(res!=SERVICE_SUCCEEDED){
     2725    printProcessResponse(m,request_inputs1,cpid,
     2726                         s, s->name,res,  // replace serviceProvider with serviceName in stored response file name
     2727                         request_inputs,
     2728                         request_outputs);
     2729    return;
     2730  }
     2731   
    27012732       
    27022733  map *tmp1=getMapFromMaps(m,"main","tmpPath");
Note: See TracChangeset for help on using the changeset viewer.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png