Changeset 274 for trunk/zoo-kernel


Ignore:
Timestamp:
Jul 18, 2011, 1:46:56 PM (13 years ago)
Author:
djay
Message:

Solving bugs #43 and #42

Location:
trunk/zoo-kernel
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/zoo-kernel/configure.ac

    r208 r274  
    314314        JS_FILE=""
    315315else
     316        JS_FILE="service_internal_js.o"
    316317        if test "$JSHOME" = "yes"
    317318        then
    318                 JS_FILE="service_internal_js.o"
    319319
    320320                #on teste si on est sous debian like
    321321                if test -f "/usr/bin/dpkg"
    322322                then
    323                         if test -n "`dpkg -l | grep libmozjs-dev`"
     323                        if test -n "`dpkg -l | grep libmozjs185-dev`"
    324324                        then
    325                                 JS_CPPFLAGS="-I/usr/include/mozjs/"
    326                                 JS_LDFLAGS="-L/usr/lib -lmozjs -lm"
    327                                 JS_LIB="mozjs"
     325                                JS_CPPFLAGS="-I/usr/include/js/"
     326                                JS_LDFLAGS="-L/usr/lib -lmozjs185 -lm"
     327                                JS_LIB="mozjs185"
    328328                        else
    329                                 XUL_VERSION="`dpkg -l | grep xulrunner | grep dev | awk '{print $3;}' | sed -e 's/\([[0-9]]\{1,2\}\.[[0-9]]\{1,2\}\.[[0-9]]\{1,2\}\.[[0-9]]\{1,2\}\).*/\1/'`"
     329                                XUL_VERSION="`dpkg -l | grep xulrunner | grep dev | awk '{print $3;}' | cut -d'+' -f1`"
    330330                                if test -n "$XUL_VERSION"
    331331                                then
     
    334334                                        JS_LIB="mozjs"
    335335                                else
    336                                         AC_MSG_ERROR([You must install libmozjs-dev or xulrunner-dev ])
     336                                        AC_MSG_ERROR([You must install libmozjs185-dev or xulrunner-dev ])
    337337                                fi
    338338                        fi
    339339                else
    340                         AC_MSG_ERROR([You must  specify your custom install of libjs])
     340                        AC_MSG_ERROR([You must  specify your custom install of libmozjs185])
    341341                fi
    342342        else
    343                 JS_CPPFLAGS="-I$JSHOME/include/"
    344                 JS_LDFLAGS="-L$JSHOME/lib -lmozjs -lm"
    345                 JS_LIB="mozjs"
     343                JS_CPPFLAGS="-I$JSHOME/include/js/"
     344                JS_LDFLAGS="-L$JSHOME/lib -lmozjs185 -lm"
     345                JS_LIB="mozjs185"
    346346
    347347        fi
     
    356356        LIBS="$JS_LDFLAGS"
    357357
    358         AC_CHECK_LIB([$JS_LIB], [JS_CallFunctionName], [], [AC_MSG_ERROR([could not find $JS_LIB])], [])
     358        AC_CHECK_LIB([$JS_LIB], [JS_NewCompartmentAndGlobalObject,JS_CompileFile,JS_CallFunctionName], [], [AC_MSG_ERROR([could not find $JS_LIB])], [])
    359359                       
    360360        AC_SUBST([JS_CPPFLAGS])
     
    366366
    367367AC_CONFIG_FILES([Makefile])
     368AC_CONFIG_FILES([ZOOMakefile.opts])
    368369AC_OUTPUT
  • trunk/zoo-kernel/service_internal.c

    r255 r274  
    258258
    259259JSBool
    260 JSUpdateStatus(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
     260JSUpdateStatus(JSContext *cx, uintN argc, jsval *argv1)
    261261{
     262  jsval *argv = JS_ARGV(cx,argv1);
    262263  JS_MaybeGC(cx);
    263264  char *sid;
     
    280281  }
    281282  if(getMapFromMaps(conf,"lenv","status")!=NULL){
    282     if(status!=NULL)
     283    fprintf(stderr,"STATUS RETURNED : %s\n",status);
     284    if(status!=NULL){
    283285      setMapInMaps(conf,"lenv","status",status);
     286      free(status);
     287    }
    284288    else
    285289      setMapInMaps(conf,"lenv","status","15");
  • trunk/zoo-kernel/service_internal.h

    r253 r274  
    8383#ifdef USE_JS
    8484  char* JSValToChar(JSContext*,jsval*);
    85   JSBool JSUpdateStatus(JSContext*,JSObject*,uintN,jsval *,jsval *);
     85  JSBool JSUpdateStatus(JSContext*,uintN,jsval *);
    8686#endif
    8787 
  • trunk/zoo-kernel/service_internal_js.c

    r42 r274  
    2727static char dbg[1024];
    2828
     29JSBool
     30JSAlert(JSContext *cx, uintN argc, jsval *argv1)
     31{
     32  jsval *argv = JS_ARGV(cx,argv1);
     33  int i=0;
     34  JS_MaybeGC(cx);
     35  for(i=0;i<argc;i++){
     36    JSString* jsmsg = JS_ValueToString(cx,argv[i]);
     37    fprintf(stderr,"[ZOO-API:JS] %s\n",JS_EncodeString(cx,jsmsg));
     38  }
     39  JS_MaybeGC(cx);
     40 
     41  return JS_TRUE;
     42}
     43
    2944int zoo_js_support(maps** main_conf,map* request,service* s,
    3045                   maps **inputs,maps **outputs)
     
    5772    return 1;
    5873  }
    59   JS_SetOptions(cx, JSOPTION_VAROBJFIX);
     74  JS_SetOptions(cx, JSOPTION_VAROBJFIX | JSOPTION_JIT | JSOPTION_METHODJIT);
    6075  JS_SetVersion(cx, JSVERSION_LATEST);
    6176  JS_SetErrorReporter(cx, reportError);
    6277
    6378  /* Create the global object. */
    64   global = JS_NewObject(cx, &global_class, NULL, NULL);
    65   if (global == NULL){
    66     return 1;
    67   }
     79  global = JS_NewCompartmentAndGlobalObject(cx, &global_class, NULL);
    6880
    6981  /* Populate the global object with the standard globals,
     
    7284    return 1;
    7385  }
     86
    7487  if (!JS_DefineFunction(cx, global, "ZOORequest", JSRequest, 4, 0))
    7588    return 1;
    7689  if (!JS_DefineFunction(cx, global, "ZOOUpdateStatus", JSUpdateStatus, 2, 0))
     90    return 1;
     91  if (!JS_DefineFunction(cx, global, "alert", JSAlert, 2, 0))
    7792    return 1;
    7893
     
    86101  char api0[strlen(tmpm1->value)+strlen(ntmp)+15];
    87102  sprintf(api0,"%s/%sZOO-proj4js.js",ntmp,tmpm1->value);
     103#ifdef JS_DEBUG
    88104  fprintf(stderr,"Trying to load %s\n",api0);
    89   JSScript *api_script1=loadZooApiFile(cx,global,api0);
     105#endif
     106  JSObject *api_script1=loadZooApiFile(cx,global,api0);
    90107  fflush(stderr);
    91108
    92109  char api1[strlen(tmpm1->value)+strlen(ntmp)+11];
    93110  sprintf(api1,"%s/%sZOO-api.js",ntmp,tmpm1->value);
     111#ifdef JS_DEBUG
    94112  fprintf(stderr,"Trying to load %s\n",api1);
    95   JSScript *api_script2=loadZooApiFile(cx,global,api1);
     113#endif
     114  JSObject *api_script2=loadZooApiFile(cx,global,api1);
    96115  fflush(stderr);
    97116
     
    106125  sprintf(filename,"%s/%s%s",ntmp,tmpm1->value,tmpm2->value);
    107126  filename[strlen(tmpm1->value)+strlen(tmpm2->value)+strlen(ntmp)+1]=0;
     127#ifdef JS_DEBUG
    108128  fprintf(stderr,"FILENAME %s\n",filename);
     129#endif
    109130  struct stat file_status;
    110131  stat(filename, &file_status);
     
    112133  uint16 lineno;
    113134  jsval rval;
    114   FILE *jsfile=fopen(filename,"r");
    115135  JSBool ok ;
    116   JSScript *script = JS_CompileFileHandle(cx, global, filename,jsfile);
     136  JSObject *script = JS_CompileFile(cx, global, filename);
    117137  if(script!=NULL){
    118138    (void)JS_ExecuteScript(cx, global, script, &rval);
     
    127147    JS_DestroyRuntime(rt);
    128148    JS_ShutDown();
    129     fclose(jsfile);
    130149    exit(-1);
    131150  }
     
    161180    if(strlen(dbg)==0)
    162181      sprintf(dbg,"No result was found after the function call");
    163     sprintf(tmp1,"Unable to run %s from the JavScript file %s : \n %s",s->name,filename,dbg);
     182    sprintf(tmp1,"Unable to run %s from the JavaScript file %s : \n %s",s->name,filename,dbg);
     183#ifdef JS_DEBUG
    164184    fprintf(stderr,"%s",tmp1);
     185#endif
    165186    map* err=createMap("text",tmp1);
    166187    addToMap(err,"code","NoApplicableCode");
     
    211232    jsval tmp2;
    212233    JSBool hasElement=JS_GetProperty(cx,d,"outputs",&tmp2);
     234#ifdef JS_DEBUG
    213235    if(!hasElement)
    214236      fprintf(stderr,"No outputs property returned\n");
     
    217239    else
    218240      fprintf(stderr,"outputs is not an array as expected\n");
     241#endif
    219242    *outputs=mapsFromJSObject(cx,tmp2);
    220243#ifdef JS_DEBUG
    221     dumpMaps(out);
     244    dumpMaps(outputs);
    222245#endif
    223246  }
    224247
    225248  /* Cleanup. */
    226   JS_DestroyScript(cx, script);
    227   JS_DestroyScript(cx, api_script1);
    228   JS_DestroyScript(cx, api_script2);
    229   //JS_MaybeGC(cx);
    230   // If we use the DestroyContext as requested to release memory then we get
    231   // issue getting back the main configuration maps after coming back to the
    232   // runRequest function ...
    233   //JS_DestroyContext(cx);
     249  JS_DestroyContext(cx);
    234250  JS_DestroyRuntime(rt);
    235251  JS_ShutDown();
     
    240256}
    241257
    242 JSScript * loadZooApiFile(JSContext *cx,JSObject  *global, char* filename){
     258JSObject * loadZooApiFile(JSContext *cx,JSObject  *global, char* filename){
    243259  struct stat api_status;
    244260  int s=stat(filename, &api_status);
    245261  if(s==0){
    246262    jsval rval;
    247     FILE *jsfile=fopen(filename,"r");
    248263    JSBool ok ;
    249     JSScript *script = JS_CompileFileHandle(cx, global, filename,jsfile);
     264    JSObject *script = JS_CompileFile(cx, JS_GetGlobalObject(cx), filename);
    250265    if(script!=NULL){
    251       (void)JS_ExecuteScript(cx, global, script, &rval);
     266      (void)JS_ExecuteScript(cx, JS_GetGlobalObject(cx), script, &rval);
     267#ifdef JS_DEBUG
    252268      fprintf(stderr,"**************\n%s correctly loaded\n**************\n",filename);
     269#endif
    253270      return script;
    254271    }
     272#ifdef JS_DEBUG
    255273    else
    256274      fprintf(stderr,"\n**************\nUnable to run %s\n**************\n",filename);
    257   }
     275#endif
     276  }
     277#ifdef JS_DEBUG
    258278  else
    259279    fprintf(stderr,"\n**************\nUnable to load %s\n**************\n",filename);
     280#endif
    260281  return NULL;
    261282}
     
    288309  map* tmpm=t;
    289310  while(tmpm!=NULL){
    290     jsval jsstr = STRING_TO_JSVAL(JS_NewString(cx,tmpm->value,strlen(tmpm->value)));
     311    jsval jsstr = STRING_TO_JSVAL(JS_NewStringCopyN(cx,tmpm->value,strlen(tmpm->value)));
    291312    JS_SetProperty(cx, res, tmpm->name,&jsstr);
    292313#ifdef JS_DEBUG
     
    335356      fprintf(stderr,"Properties length :  %d \n",idp->length);
    336357#endif
     358      tres=(maps*)malloc(MAPS_SIZE);
     359      tres->name=NULL;
     360      tres->content=NULL;
     361      tres->next=NULL;
     362
    337363      for (index=0,argNum=idp->length;index<argNum;index++) {
    338364        jsval id = idp->vector[index];
     
    346372        len1 = JS_GetStringLength(jsmsg);
    347373#ifdef JS_DEBUG
    348         fprintf(stderr,"Enumerate id : %d => %s\n",oi,JS_GetStringBytes(jsmsg));
     374        fprintf(stderr,"Enumerate id : %d => %s\n",oi,JS_EncodeString(cx,jsmsg));
    349375#endif
    350376        jsval nvp=JSVAL_NULL;
    351         if((JS_GetProperty(cx, JSVAL_TO_OBJECT(tmp1), JS_GetStringBytes(jsmsg), &nvp)==JS_FALSE))
    352 #ifdef JS_DEBUG
    353         fprintf(stderr,"Enumerate id : %d => %s => No more value\n",oi,JS_GetStringBytes(jsmsg));
    354 #endif
     377        if((JS_GetProperty(cx, JSVAL_TO_OBJECT(tmp1), JS_EncodeString(cx,jsmsg), &nvp)==JS_FALSE)){
     378#ifdef JS_DEBUG
     379          fprintf(stderr,"Enumerate id : %d => %s => No more value\n",oi,JS_EncodeString(cx,jsmsg));
     380#endif
     381        }
     382       
    355383        if(JSVAL_IS_OBJECT(nvp)){
    356384#ifdef JS_DEBUG
     
    358386#endif
    359387        }
    360 #ifdef JS_DEBUG
    361         else
    362           fprintf(stderr,"JSVAL NVP IS NOT OBJECT !!\n");
    363 #endif
    364         JSObject *nvp1;
     388
     389        JSObject *nvp1=JSVAL_NULL;
    365390        JS_ValueToObject(cx,nvp,&nvp1);
    366391        jsval nvp1j=OBJECT_TO_JSVAL(nvp1);
    367392        if(JSVAL_IS_OBJECT(nvp1j)){
    368 #ifdef JS_DEBUG
    369           fprintf(stderr,"JSVAL NVP1J IS OBJECT\n");
    370 #endif
    371           tres=(maps*)malloc(MAPS_SIZE);
    372           tres->name=strdup(JS_GetStringBytes(jsmsg));
    373           tres->content=mapFromJSObject(cx,nvp1j);
    374           tres->next=NULL;
    375 #ifdef JS_DEBUG
    376           dumpMaps(res);
    377 #endif
    378           if(res==NULL)
    379             res=dupMaps(&tres);
     393          JSString *jsmsg1;
     394          JSObject *nvp2=JSVAL_NULL;
     395          jsmsg1 = JS_ValueToString(cx,nvp1j);
     396          len1 = JS_GetStringLength(jsmsg1);
     397          //#ifdef JS_DEBUG
     398          fprintf(stderr,"JSVAL NVP1J IS OBJECT %s = %s\n",JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     399          //#endif
     400          if(strcasecmp(JS_EncodeString(cx,jsmsg1),"[object Object]")==0){
     401            tres->name=strdup(JS_EncodeString(cx,jsmsg));
     402            tres->content=mapFromJSObject(cx,nvp1j);
     403          }
    380404          else
    381             addMapsToMaps(&res,tres);
    382           freeMaps(&tres);
    383           free(tres);
    384           tres=NULL;
    385 #ifdef JS_DEBUG
    386           dumpMaps(res);
    387 #endif
     405            if(strcasecmp(JS_EncodeString(cx,jsmsg),"name")==0){
     406              tres->name=strdup(JS_EncodeString(cx,jsmsg1));
     407            }
     408            else{
     409              if(tres->content==NULL)
     410                tres->content=createMap(JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     411              else
     412                addToMap(tres->content,JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     413            }
    388414        }
    389415#ifdef JS_DEBUG
     
    391417          fprintf(stderr,"JSVAL NVP1J IS NOT OBJECT !!\n");
    392418#endif
     419
    393420      }
     421      //#ifdef JS_DEBUG
     422      dumpMaps(tres);
     423      //#endif
     424      if(res==NULL)
     425        res=dupMaps(&tres);
     426      else
     427        addMapsToMaps(&res,tres);
     428      freeMaps(&tres);
     429      free(tres);
     430      tres=NULL;
     431
    394432    }
    395433  }
    396 #ifdef JS_DEBUG
     434  //#ifdef JS_DEBUG
    397435  dumpMaps(res);
    398 #endif
     436  //#endif
    399437  return res;
    400438}
     
    423461      len = JS_GetStringLength(jsmsg);
    424462      jsval nvp;
    425       JS_GetProperty(cx, JSVAL_TO_OBJECT(t), JS_GetStringBytes(jsmsg), &nvp);
     463      JS_GetProperty(cx, JSVAL_TO_OBJECT(t), JS_EncodeString(cx,jsmsg), &nvp);
    426464      jsmsg1 = JS_ValueToString(cx,nvp);
    427465      len1 = JS_GetStringLength(jsmsg1);
    428466#ifdef JS_DEBUG
    429       fprintf(stderr,"Enumerate id : %d [ %s => %s ]\n",index,JS_GetStringBytes(jsmsg),JS_GetStringBytes(jsmsg1));
     467      fprintf(stderr,"Enumerate id : %d [ %s => %s ]\n",index,JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
    430468#endif
    431469      if(res!=NULL){
    432470#ifdef JS_DEBUG
    433         fprintf(stderr,"%s - %s\n",JS_GetStringBytes(jsmsg),JS_GetStringBytes(jsmsg1));
    434 #endif
    435         addToMap(res,JS_GetStringBytes(jsmsg),JS_GetStringBytes(jsmsg1));
     471        fprintf(stderr,"%s - %s\n",JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
     472#endif
     473        addToMap(res,JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
    436474      }
    437475      else{
    438         res=createMap(JS_GetStringBytes(jsmsg),JS_GetStringBytes(jsmsg1));
     476        res=createMap(JS_EncodeString(cx,jsmsg),JS_EncodeString(cx,jsmsg1));
    439477        res->next=NULL;
    440478      }
  • trunk/zoo-kernel/service_internal_js.h

    r42 r274  
    5252  int zoo_js_support(maps**,map*,service*,maps **,maps **);
    5353
    54   JSScript *loadZooApiFile(JSContext*,JSObject*,char*);
     54  JSObject *loadZooApiFile(JSContext*,JSObject*,char*);
    5555
    5656#ifdef __cplusplus
  • trunk/zoo-kernel/ulinet.c

    r93 r274  
    385385  jsmsg = JS_ValueToString(context,*arg);
    386386  len = JS_GetStringLength(jsmsg);
    387   tmp = JS_GetStringBytes(jsmsg);
     387  tmp = JS_EncodeString(context,jsmsg);
    388388  c = (char*)malloc((len+1)*sizeof(char));
    389389  c[len] = '\0';
     
    435435
    436436JSBool
    437 JSRequest(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
     437JSRequest(JSContext *cx, uintN argc, jsval *argv1)
    438438{
     439  jsval *argv = JS_ARGV(cx,argv1);
    439440  HINTERNET hInternet;
    440441  char *url;
     
    488489  fprintf(stderr,"content downloaded (%d) (%s) \n",dwRead,tmpValue);
    489490#endif
    490   *rval=STRING_TO_JSVAL(JS_NewString(cx,tmpValue,strlen(tmpValue)));
     491  JS_SET_RVAL(cx, argv1,STRING_TO_JSVAL(JS_NewStringCopyN(cx,tmpValue,strlen(tmpValue))));
    491492  free(url);
    492493  if(argc>=2)
  • trunk/zoo-kernel/ulinet.h

    r1 r274  
    138138
    139139#ifdef USE_JS
    140 JSBool JSRequest(JSContext*, JSObject*, uintN, jsval*, jsval*);
     140JSBool JSRequest(JSContext*, uintN, jsval*);
    141141#endif
    142142
  • trunk/zoo-kernel/zoo_service_loader.c

    r260 r274  
    16321632               * Title, Asbtract
    16331633               */
    1634               if(xmlStrncasecmp(cur2->name,BAD_CAST "Title",xmlStrlen(cur2->name))==0 ||
     1634              else if(xmlStrncasecmp(cur2->name,BAD_CAST "Title",xmlStrlen(cur2->name))==0 ||
    16351635                 xmlStrncasecmp(cur2->name,BAD_CAST "Abstract",xmlStrlen(cur2->name))==0){
    16361636                xmlChar *val=
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