--- a/trunk/php-java-bridge/java.c +++ b/trunk/php-java-bridge/java.c @@ -26,9 +26,7 @@ PHP_RINIT_FUNCTION(java) { - extern int java_connect_to_server(struct cfg*cfg TSRMLS_DC); assert(!JG(jenv)); - java_connect_to_server(&JG(cfg) TSRMLS_CC); return SUCCESS; } PHP_RSHUTDOWN_FUNCTION(java) @@ -47,36 +45,30 @@ PHP_FUNCTION(java_last_exception_get) { jlong result = 0; + proxyenv *jenv = java_connect_to_server(&JG(cfg) TSRMLS_CC); + if(!jenv) {RETURN_NULL();} if (ZEND_NUM_ARGS()!=0) WRONG_PARAM_COUNT; result = (jlong)(long)return_value; - - if(!JG(jenv)) { - php_error(E_ERROR, "java not initialized"); - return; - } - - (*JG(jenv))->LastException(JG(jenv), JG(php_reflect), - JG(lastEx), result); + + (*jenv)->LastException(jenv, JG(php_reflect), + JG(lastEx), result); } PHP_FUNCTION(java_last_exception_clear) { + proxyenv *jenv = java_connect_to_server(&JG(cfg) TSRMLS_CC); jlong result = 0; jvalue args[0]; + if(!jenv) {RETURN_NULL();} if (ZEND_NUM_ARGS()!=0) WRONG_PARAM_COUNT; result = (jlong)(long)return_value; - if(!JG(jenv)) { - php_error(E_ERROR, "java not initialized"); - return; - } - - (*JG(jenv))->CallVoidMethodA(0, JG(jenv), JG(php_reflect), - JG(clearEx), args); + (*jenv)->CallVoidMethodA(0, jenv, JG(php_reflect), + JG(clearEx), args); } PHP_FUNCTION(java_set_library_path) @@ -84,8 +76,9 @@ zval **path; jlong result = 0; jstring p; - proxyenv *jenv =JG(jenv); + proxyenv *jenv = java_connect_to_server(&JG(cfg) TSRMLS_CC); jvalue args[1]; + if(!jenv) {RETURN_NULL();} if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &path) == FAILURE) WRONG_PARAM_COUNT; @@ -93,17 +86,12 @@ convert_to_string_ex(path); result = (jlong)(long)return_value; - - if(!JG(jenv)) { - php_error(E_ERROR, "java not initialized"); - return; - } BEGIN_TRANSACTION(jenv); - p = (*JG(jenv))->NewStringUTF(JG(jenv), Z_STRVAL_PP(path)); + p = (*jenv)->NewStringUTF(jenv, Z_STRVAL_PP(path)); args[0].l=p; - (*JG(jenv))->CallVoidMethodA(1, JG(jenv), JG(php_reflect), - JG(setJarPath), args); + (*jenv)->CallVoidMethodA(1, jenv, JG(php_reflect), + JG(setJarPath), args); END_TRANSACTION(jenv); } @@ -121,17 +109,14 @@ zval **pobj, **pclass; jobject obj, class; jboolean result; + proxyenv *jenv = java_connect_to_server(&JG(cfg) TSRMLS_CC); + if(!jenv) {RETURN_NULL();} if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2, &pobj, &pclass) == FAILURE) WRONG_PARAM_COUNT; convert_to_object_ex(pobj); convert_to_object_ex(pclass); - - if(!JG(jenv)) { - php_error(E_ERROR, "java not initialized"); - return; - } obj = NULL; if((Z_TYPE_PP(pobj) == IS_OBJECT) && check_type(*pobj, php_java_class_entry)){ @@ -152,7 +137,7 @@ return; } - result = (*JG(jenv))->IsInstanceOf(JG(jenv), obj, class); + result = (*jenv)->IsInstanceOf(jenv, obj, class); if(result == JNI_TRUE) { RETURN_TRUE; } else { @@ -272,9 +257,10 @@ extern int java_test_server(struct cfg*cfg TSRMLS_DC); extern void java_start_server(struct cfg*cfg TSRMLS_DC); - if(java_test_server(&JG(cfg) TSRMLS_CC)==FAILURE) + if(java_test_server(&JG(cfg) TSRMLS_CC)==FAILURE) { java_start_server(&JG(cfg) TSRMLS_CC); - java_test_server(&JG(cfg) TSRMLS_CC); + java_test_server(&JG(cfg) TSRMLS_CC); + } } #ifdef ZEND_ENGINE_2 @@ -372,7 +358,7 @@ zval **argv; int argc = ZEND_NUM_ARGS(); jobject obj; - + argv = (zval **) safe_emalloc(sizeof(zval *), argc, 0); if (zend_get_parameters_array(ht, argc, argv) == FAILURE) { php_error(E_ERROR, "Couldn't fetch arguments into array."); @@ -406,11 +392,12 @@ } PHP_METHOD(java, offsetExists) { - proxyenv *jenv =JG(jenv); + proxyenv *jenv = java_connect_to_server(&JG(cfg) TSRMLS_CC); zval **argv; int argc; jobject obj, map; jvalue args[1]; + if(!jenv) {RETURN_NULL();} argc = ZEND_NUM_ARGS(); argv = (zval **) safe_emalloc(sizeof(zval *), argc, 0); @@ -423,7 +410,7 @@ BEGIN_TRANSACTION(jenv); args[0].l=obj; - map = (*JG(jenv))->CallObjectMethodA(1, JG(jenv), JG(php_reflect), JG(getPhpMap), args); + map = (*jenv)->CallObjectMethodA(1, jenv, JG(php_reflect), JG(getPhpMap), args); php_java_invoke("offsetExists", map, argc, argv, return_value); END_TRANSACTION(jenv); @@ -434,8 +421,9 @@ zval **argv; int argc; jobject obj, map; - proxyenv *jenv =JG(jenv); + proxyenv *jenv = java_connect_to_server(&JG(cfg) TSRMLS_CC); jvalue args[1]; + if(!jenv) {RETURN_NULL();} argc = ZEND_NUM_ARGS(); argv = (zval **) safe_emalloc(sizeof(zval *), argc, 0); @@ -447,7 +435,7 @@ assert(obj); BEGIN_TRANSACTION(jenv); args[0].l=obj; - map = (*JG(jenv))->CallObjectMethodA(1, JG(jenv), JG(php_reflect), JG(getPhpMap), args); + map = (*jenv)->CallObjectMethodA(1, jenv, JG(php_reflect), JG(getPhpMap), args); php_java_invoke("offsetGet", map, argc, argv, return_value); END_TRANSACTION(jenv); @@ -459,8 +447,9 @@ zval **argv; int argc; jobject obj, map; - proxyenv *jenv = JG(jenv); + proxyenv *jenv = java_connect_to_server(&JG(cfg) TSRMLS_CC); jvalue args[1]; + if(!jenv) {RETURN_NULL();} argc = ZEND_NUM_ARGS(); argv = (zval **) safe_emalloc(sizeof(zval *), argc, 0); @@ -485,8 +474,9 @@ zval **argv; int argc; jobject obj, map; - proxyenv *jenv = JG(jenv); + proxyenv *jenv = java_connect_to_server(&JG(cfg) TSRMLS_CC); jvalue args[1]; + if(!jenv) {RETURN_NULL();} argc = ZEND_NUM_ARGS(); argv = (zval **) safe_emalloc(sizeof(zval *), argc, 0);