Ignore:
Timestamp:
Jan 5, 2011, 3:20:01 PM (13 years ago)
Author:
djay
Message:

Adding contains and getIoTypeFromElement functions in service.h. Remove memory leaks from the Service Configuration Parser, add the support for multiple supported formats as before. Small modification of the ZOO-Kernel Java Support, adding the capability to access the modified main_conf HashMap? from the Kernel to let lenv message map pass when an error occurs and it is handled in the Service code. Adding same capability for the ZOO-Kernel Python Support. Use strcasecmp in service.h rather than strlen+strncasecmp. Ensure that only OWS compliant informations are available for Contact.Phone and Contact.Adress. Remove memory leak in createExceptionReportNode. Correction of the addDefaultValues function to add the default format using the informations from DataInputs? if present, this should correct the behavior of the ZOO-Kernel when choosing the extension value which should now point to the corresponding zcfg value if present. Don't set the NULL value for inputs not provided in the DataInputs?, still set NULL as default value for outputs. Avoid segfault in freeElements when some zcfg values was not set correctly. Link against the client libjvm.so file rather than the server one.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/zoo-kernel/service_internal_java.c

    r9 r57  
    104104      fprintf(stderr,"Function successfully loaded\n");
    105105#endif
     106      jclass scHashMapClass,scHashMap_class;
     107      jmethodID scHashMap_constructor;
     108      scHashMapClass = (*env)->FindClass(env, "java/util/HashMap");
     109      scHashMap_class = (*env)->NewGlobalRef(env, scHashMapClass);
     110      scHashMap_constructor = (*env)->GetMethodID(env, scHashMap_class, "<init>", "()V");
    106111      /**
    107112       * The 3 standard parameter for each services
    108113       */
    109       jobject arg1=HashMap_FromMaps(env,m);
    110       jobject arg2=HashMap_FromMaps(env,inputs);
    111       jobject arg3=HashMap_FromMaps(env,outputs);
     114      jobject arg1=HashMap_FromMaps(env,m,scHashMapClass,scHashMap_class,scHashMap_constructor);
     115      jobject arg2=HashMap_FromMaps(env,inputs,scHashMapClass,scHashMap_class,scHashMap_constructor);
     116      jobject arg3=HashMap_FromMaps(env,outputs,scHashMapClass,scHashMap_class,scHashMap_constructor);
    112117      jint pValue=0;
    113118
     
    115120      if (pValue != NULL){
    116121        res=pValue;
    117         //inputs=mapsFromHashMap(env,arg2);
    118         outputs=mapsFromHashMap(env,arg3);
     122        m=mapsFromHashMap(env,arg1,scHashMapClass);
     123        *main_conf=m;
     124        outputs=mapsFromHashMap(env,arg3,scHashMapClass);
    119125        *real_outputs=outputs;
    120126
     
    123129        dumpMaps(inputs);
    124130        dumpMaps(outputs);
    125         /*fprintf(stderr,"printProcessResponse(%i,\"%s\",%i,inputs,outputs);",
    126           getpid(),tmp->value,PyInt_AsLong(pValue));*/
    127131#endif
    128132      }else{     
     
    180184}
    181185
    182 jobject HashMap_FromMaps(JNIEnv *env,maps* t){
    183   jclass scHashMapClass,scHashMap_class;
    184   jmethodID scHashMap_constructor;
     186jobject HashMap_FromMaps(JNIEnv *env,maps* t,jclass scHashMapClass,jclass scHashMap_class,jmethodID scHashMap_constructor){
    185187  jobject scObject,scObject1;
    186   scHashMapClass = (*env)->FindClass(env, "java/util/HashMap");
    187   scHashMap_class = (*env)->NewGlobalRef(env, scHashMapClass);
    188   scHashMap_constructor = (*env)->GetMethodID(env, scHashMap_class, "<init>", "()V");   
    189188  if(scHashMap_constructor!=NULL){
    190189    scObject = (*env)->NewObject(env, scHashMap_class, scHashMap_constructor);
     
    204203      (*env)->CallObjectMethod(env,scObject, put_mid, (*env)->NewStringUTF(env,tmp->name), scObject1);
    205204      tmp=tmp->next;
    206     } 
     205    }
    207206    return scObject;
    208207  }
     
    211210}
    212211
    213 maps* mapsFromHashMap(JNIEnv *env,jobject t){
     212maps* mapsFromHashMap(JNIEnv *env,jobject t,jclass scHashMapClass){
    214213#ifdef DEBUG
    215214  fprintf(stderr,"mapsFromHashMap start\n");
     
    224223   * }
    225224   */
    226   jclass scHashMapClass,scHashMap_class,scSetClass,scIteratorClass,scMapEntryClass,scSet_class,scMapClass;
     225  jclass scHashMap_class,scSetClass,scIteratorClass,scMapEntryClass,scSet_class,scMapClass;
    227226  jmethodID entrySet_mid,iterator_mid,hasNext_mid,next_mid,getKey_mid,getValue_mid;
    228227  jobject scObject,scObject1;
    229   scHashMapClass=(*env)->GetObjectClass(env,t);
    230   //scMapClass=(*env)->FindClass(env, "java/util/HashMap");
    231   //scHashMapClass = (*env)->FindClass(env, "java/util/HashMap");
    232228  if(scHashMapClass==NULL){
    233229    fprintf(stderr,"Unable to load java.util.HashMap\n");
     
    276272  maps* final_res=NULL;
    277273  map* res=NULL;
    278 #ifdef DEBUG
    279   int i=0;
    280 #endif
    281274  while((*env)->CallBooleanMethod(env,final_iterator,hasNext_mid)){
    282 #ifdef DEBUG
    283     fprintf(stderr,"mapsFromHashMap loop %d\n",i);
    284     i++;
    285 #endif
    286275    jobject tmp=(*env)->CallObjectMethod(env,final_iterator,next_mid);
    287276
     
    289278    jobject set=(*env)->CallObjectMethod(env,imap,entrySet_mid);
    290279    jobject iterator=(*env)->CallObjectMethod(env,set,iterator_mid);
    291 #ifdef DEBUG
    292     int j=0;
    293 #endif
     280
    294281    while((*env)->CallBooleanMethod(env,iterator,hasNext_mid)){
    295 #ifdef DEBUG
    296       fprintf(stderr,"mapsFromHashMap internal loop %d\n",j);
    297       j++;
    298 #endif
    299282      jobject tmp1=(*env)->CallObjectMethod(env,iterator,next_mid);
    300283      jobject jk=(*env)->CallObjectMethod(env,tmp1,getKey_mid);
     
    310293        res=createMap((*env)->GetStringUTFChars(env, jk, NULL),
    311294                      (*env)->GetStringUTFChars(env, jv, NULL));
    312       }else
     295      }else{
    313296        addToMap(res,(*env)->GetStringUTFChars(env, jk, NULL),
    314297                 (*env)->GetStringUTFChars(env, jv, NULL));
     298      }
    315299    }
    316300    jobject jk=(*env)->CallObjectMethod(env,tmp,getKey_mid);
    317301    maps* cmap=(maps*)malloc(sizeof(maps));
    318302    cmap->name=(*env)->GetStringUTFChars(env, jk, NULL);
     303#ifdef DEBUG
     304    fprintf(stderr," / %s \n",cmap->name);
     305#endif
    319306    cmap->content=res;
    320307    cmap->next=NULL;
    321     if(final_res==NULL){
     308    if(final_res==NULL)
    322309      final_res=dupMaps(&cmap);
    323     }else
     310    else
    324311      addMapsToMaps(&final_res,cmap);
    325     final_res->next=NULL;
    326312    freeMaps(&cmap);
    327313    free(cmap);
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