Changeset 57 for trunk/zoo-kernel/service_internal_java.c
- Timestamp:
- Jan 5, 2011, 3:20:01 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/zoo-kernel/service_internal_java.c
r9 r57 104 104 fprintf(stderr,"Function successfully loaded\n"); 105 105 #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"); 106 111 /** 107 112 * The 3 standard parameter for each services 108 113 */ 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); 112 117 jint pValue=0; 113 118 … … 115 120 if (pValue != NULL){ 116 121 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); 119 125 *real_outputs=outputs; 120 126 … … 123 129 dumpMaps(inputs); 124 130 dumpMaps(outputs); 125 /*fprintf(stderr,"printProcessResponse(%i,\"%s\",%i,inputs,outputs);",126 getpid(),tmp->value,PyInt_AsLong(pValue));*/127 131 #endif 128 132 }else{ … … 180 184 } 181 185 182 jobject HashMap_FromMaps(JNIEnv *env,maps* t){ 183 jclass scHashMapClass,scHashMap_class; 184 jmethodID scHashMap_constructor; 186 jobject HashMap_FromMaps(JNIEnv *env,maps* t,jclass scHashMapClass,jclass scHashMap_class,jmethodID scHashMap_constructor){ 185 187 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");189 188 if(scHashMap_constructor!=NULL){ 190 189 scObject = (*env)->NewObject(env, scHashMap_class, scHashMap_constructor); … … 204 203 (*env)->CallObjectMethod(env,scObject, put_mid, (*env)->NewStringUTF(env,tmp->name), scObject1); 205 204 tmp=tmp->next; 206 } 205 } 207 206 return scObject; 208 207 } … … 211 210 } 212 211 213 maps* mapsFromHashMap(JNIEnv *env,jobject t ){212 maps* mapsFromHashMap(JNIEnv *env,jobject t,jclass scHashMapClass){ 214 213 #ifdef DEBUG 215 214 fprintf(stderr,"mapsFromHashMap start\n"); … … 224 223 * } 225 224 */ 226 jclass scHashMap Class,scHashMap_class,scSetClass,scIteratorClass,scMapEntryClass,scSet_class,scMapClass;225 jclass scHashMap_class,scSetClass,scIteratorClass,scMapEntryClass,scSet_class,scMapClass; 227 226 jmethodID entrySet_mid,iterator_mid,hasNext_mid,next_mid,getKey_mid,getValue_mid; 228 227 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");232 228 if(scHashMapClass==NULL){ 233 229 fprintf(stderr,"Unable to load java.util.HashMap\n"); … … 276 272 maps* final_res=NULL; 277 273 map* res=NULL; 278 #ifdef DEBUG279 int i=0;280 #endif281 274 while((*env)->CallBooleanMethod(env,final_iterator,hasNext_mid)){ 282 #ifdef DEBUG283 fprintf(stderr,"mapsFromHashMap loop %d\n",i);284 i++;285 #endif286 275 jobject tmp=(*env)->CallObjectMethod(env,final_iterator,next_mid); 287 276 … … 289 278 jobject set=(*env)->CallObjectMethod(env,imap,entrySet_mid); 290 279 jobject iterator=(*env)->CallObjectMethod(env,set,iterator_mid); 291 #ifdef DEBUG 292 int j=0; 293 #endif 280 294 281 while((*env)->CallBooleanMethod(env,iterator,hasNext_mid)){ 295 #ifdef DEBUG296 fprintf(stderr,"mapsFromHashMap internal loop %d\n",j);297 j++;298 #endif299 282 jobject tmp1=(*env)->CallObjectMethod(env,iterator,next_mid); 300 283 jobject jk=(*env)->CallObjectMethod(env,tmp1,getKey_mid); … … 310 293 res=createMap((*env)->GetStringUTFChars(env, jk, NULL), 311 294 (*env)->GetStringUTFChars(env, jv, NULL)); 312 }else 295 }else{ 313 296 addToMap(res,(*env)->GetStringUTFChars(env, jk, NULL), 314 297 (*env)->GetStringUTFChars(env, jv, NULL)); 298 } 315 299 } 316 300 jobject jk=(*env)->CallObjectMethod(env,tmp,getKey_mid); 317 301 maps* cmap=(maps*)malloc(sizeof(maps)); 318 302 cmap->name=(*env)->GetStringUTFChars(env, jk, NULL); 303 #ifdef DEBUG 304 fprintf(stderr," / %s \n",cmap->name); 305 #endif 319 306 cmap->content=res; 320 307 cmap->next=NULL; 321 if(final_res==NULL) {308 if(final_res==NULL) 322 309 final_res=dupMaps(&cmap); 323 }else310 else 324 311 addMapsToMaps(&final_res,cmap); 325 final_res->next=NULL;326 312 freeMaps(&cmap); 327 313 free(cmap);
Note: See TracChangeset
for help on using the changeset viewer.