javacommons/gcfprotocols/http/src.s60/nativetransaction.cpp
changeset 23 98ccebc37403
parent 21 2a9601315dfc
child 48 e0d6e9bd3ca7
--- a/javacommons/gcfprotocols/http/src.s60/nativetransaction.cpp	Mon May 03 12:27:20 2010 +0300
+++ b/javacommons/gcfprotocols/http/src.s60/nativetransaction.cpp	Fri May 14 15:47:24 2010 +0300
@@ -18,7 +18,13 @@
 
 #include <e32def.h>
 #include <centralrepository.h>
+
+#ifdef RD_JAVA_S60_RELEASE_10_1_ONWARDS
+#include <CUserAgent.h>
+#else
 #include <cuseragent.h>
+#endif
+
 #include "com_nokia_mj_impl_http_HttpConnectionNative.h"
 #include "nativehttptransaction.h"
 #include "nativehttpsession.h"
@@ -54,16 +60,6 @@
     return handle;
 }
 
-JNIEXPORT void JNICALL Java_com_nokia_mj_impl_http_HttpConnectionNative__1dispose(
-    JNIEnv*,
-    jobject,
-    jint aNativeHttpSessionHandle)
-{
-    LOG(ESOCKET,EInfo,"http jni _dispose()");
-    NativeHttpSession* session = reinterpret_cast<NativeHttpSession*>(aNativeHttpSessionHandle);
-    delete session;
-}
-
 JNIEXPORT void JNICALL Java_com_nokia_mj_impl_http_HttpConnectionNative__1closeTransaction(
     JNIEnv* aJni,
     jobject aPeer,
@@ -72,8 +68,16 @@
 
     NativeHttpTransaction* tran = reinterpret_cast<NativeHttpTransaction*>(aNativeHttpTransaction);
     tran->iJniPeer = aJni->NewWeakGlobalRef(aPeer);
-
-    tran->Dispose();
+    try
+		{
+        tran->Dispose();
+   	}
+   	catch(...)
+   	{
+   		  // function server usage may throw an exception.   		
+   		  // ignore, called when transcation is closed
+   	    ELOG(ESOCKET,"Http JNI Error, exception caught!: _closeTransaction");    	
+   	}
     delete tran;
 }
 
@@ -84,10 +88,21 @@
     jstring aUri,
     jstring aRequestMethod)
 {
+		LOG(ESOCKET,EInfo,"http jni _createNativeTransaction()");
     NativeHttpSession* session = reinterpret_cast<NativeHttpSession*>(aNativeHttpSession);
     //tran->iJniPeer = aJni->NewGlobalRef(aPeer);
-    TRAPD(handle,   handle = session->CreateTransactionL(aJni, aPeer , aUri, aRequestMethod););
-    return handle;
+    try
+    {
+        TRAPD(handle,   handle = session->CreateTransactionL(aJni, aPeer , aUri, aRequestMethod););
+        return handle;
+    }
+    catch(...)
+    {
+        // function server usage may throw an exception.   	
+        ELOG(ESOCKET,"Http JNI Error, exception caught!: _createTransaction");    	
+        return -1;    	
+    }
+    
 }
 
 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_http_HttpConnectionNative__1submitTransaction(
@@ -99,11 +114,20 @@
     jint aPostDataLength,
     jint aResponseTimeout)
 {
+		LOG(ESOCKET,EInfo,"http jni _submitTransaction");
     NativeHttpTransaction* tran = reinterpret_cast<NativeHttpTransaction*>(aNativeHttpTransaction);
     int respTimeOut = aResponseTimeout;
     tran->iJniPeer = aJni->NewWeakGlobalRef(aPeer);
-    TRAPD(err,tran->SubmitL(aJni, &aPeer,aHeaders, aPostData, aPostDataLength, respTimeOut));
-    return err;
+    try
+    {
+        TRAPD(err,tran->SubmitL(aJni, &aPeer,aHeaders, aPostData, aPostDataLength, respTimeOut));
+        return err;
+    }
+    catch(...)
+    {
+        ELOG(ESOCKET,"Http JNI Error, exception caught!: _submitTransaction");    	
+        return -1;	    	
+    }    
 }
 
 JNIEXPORT jobjectArray JNICALL Java_com_nokia_mj_impl_http_HttpConnectionNative__1getResponse(
@@ -111,18 +135,24 @@
     jobject aPeer,
     jint aNativeHttpTransaction)
 {
+		LOG(ESOCKET,EInfo,"http jni _getResponse");
     jobjectArray rawHeaders=NULL;
-//          java::util::Monitor *iMonitor2;
-//  iMonitor2 = java::util::Monitor::createMonitor();
-//  iMonitor2->wait();
-
     NativeHttpTransaction* tran = reinterpret_cast<NativeHttpTransaction*>(aNativeHttpTransaction);
     tran->iJniPeer = aJni->NewWeakGlobalRef(aPeer);
-    TRAPD(err, rawHeaders =  tran->GetResponseL(aJni));
-    if (err!=KErrNone)
+    try
     {
-        rawHeaders=NULL;
-    }
+		    TRAPD(err, rawHeaders =  tran->GetResponseL(aJni));
+		    if (err!=KErrNone)
+		    {
+		        rawHeaders=NULL;
+		    }
+		}
+		catch(...)
+		{
+				rawHeaders=NULL;
+				ELOG(ESOCKET,"Http JNI Error, exception caught!: _getResponse");    	
+			
+		}
     return rawHeaders;
 }
 
@@ -134,20 +164,27 @@
     jbyteArray  aBytes,
     jint        aLength)
 {
+		LOG(ESOCKET,EInfo,"http jni _getBytes");
     jbyte* bytes = aEnv->GetByteArrayElements(aBytes, NULL);
 
-
     if (bytes == NULL)
     {
         return -1;
     }
-
-    NativeHttpTransaction* tran = reinterpret_cast<NativeHttpTransaction*>(aNativeHttpTransaction);
-    tran->iJniPeer = aEnv->NewWeakGlobalRef(aPeer);
-    TInt length = tran->ReadBytes(reinterpret_cast<TUint8*>(bytes), aLength);
-
-    aEnv->ReleaseByteArrayElements(aBytes, bytes, NULL);
-    return length;
+		try
+		{
+		    NativeHttpTransaction* tran = reinterpret_cast<NativeHttpTransaction*>(aNativeHttpTransaction);
+		    tran->iJniPeer = aEnv->NewWeakGlobalRef(aPeer);
+		    TInt length = tran->ReadBytes(reinterpret_cast<TUint8*>(bytes), aLength);
+		
+		    aEnv->ReleaseByteArrayElements(aBytes, bytes, NULL);
+		    return length;
+		}
+		catch(...)
+		{
+				ELOG(ESOCKET,"Http JNI Error, exception caught!: _getBytes");    	
+				return -1;					
+		}
 }
 
 JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_http_HttpConnectionNative__1available(
@@ -157,7 +194,15 @@
 {
     NativeHttpTransaction* tran = reinterpret_cast<NativeHttpTransaction*>(aNativeHttpTransaction);
     tran->iJniPeer = aJni->NewWeakGlobalRef(aPeer);
-    return tran->Available();
+    try
+    {
+    		return tran->Available();
+    }
+    catch(...)
+    {
+    		ELOG(ESOCKET,"Http JNI Error, exception caught!: _available");    	
+    		return -1;    	
+    }
 }
 
 JNIEXPORT jstring JNICALL Java_com_nokia_mj_impl_http_HttpConnectionNative__1getUserAgentHeaderValue(