User: vg      
Date: 05/02/16 07:52:31

Modified:
 /dba/connectivity/source/drivers/hsqldb/
  StorageNativeInputStream.cxx

Log:
 INTEGRATION: CWS hsqldb2 (1.2.20); FILE MERGED
 2005/01/28 12:21:54 oj 1.2.20.2: #i39922# new interfaces in hsqldb and some 
debug info
 2005/01/25 08:42:51 oj 1.2.20.1: #i39922# correct stream handling

File Changes:

Directory: /dba/connectivity/source/drivers/hsqldb/
===================================================

File [changed]: StorageNativeInputStream.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/StorageNativeInputStream.cxx?r1=1.2&r2=1.3
Delta lines:  +38 -44
---------------------
--- StorageNativeInputStream.cxx        9 Nov 2004 12:09:23 -0000       1.2
+++ StorageNativeInputStream.cxx        16 Feb 2005 15:52:28 -0000      1.3
@@ -117,7 +117,15 @@
 JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeInputStream_openStream
   (JNIEnv * env, jobject obj_this,jstring key, jstring name, jint mode)
 {
-       
Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_openStream(env,obj_this,name,key,mode);
+#if OSL_DEBUG_LEVEL > 1
+    {
+        ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name);
+        sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input"));
+        ::rtl::OString sName = 
::rtl::OUStringToOString(sOrgName,RTL_TEXTENCODING_ASCII_US);
+        getStreams()[sOrgName] = fopen( sName.getStr(), "a+" );
+    }
+#endif
+       StorageContainer::registerStream(env,name,key,mode);
 }
 // 
-----------------------------------------------------------------------------
 
@@ -141,39 +149,7 @@
 JNIEXPORT jint JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeInputStream_read__Ljava_lang_String_2Ljava_lang_String_2_3BII
   (JNIEnv * env, jobject obj_this,jstring key, jstring name, jbyteArray 
buffer, jint off, jint len)
 {
-       ::boost::shared_ptr<StreamHelper> pHelper = 
StorageContainer::getRegisteredStream(env,name,key);
-       Reference< XInputStream> xIn = pHelper.get() ? 
pHelper->getInputStream() : Reference< XInputStream>();
-       OSL_ENSURE(xIn.is(),"Input stream is NULL!");
-       if ( xIn.is() )
-       {
-               sal_Int32 nBytesRead = 0;
-
-               jsize nLen = env->GetArrayLength(buffer);
-               Sequence< ::sal_Int8 > aData(nLen);
-               
-               sal_Int32 av = xIn->available();
-               if ( av != 0 && nLen > av)
-                       nBytesRead = xIn->readBytes(aData, av);
-               else
-                       nBytesRead = xIn->readBytes(aData,nLen);
-           
-               // Casting bytesRead to an int is okay, since the user can
-               // only pass in an integer length to read, so the bytesRead 
-               // must <= len.
-               //
-               if (nBytesRead <= 0) {
-                       return -1;
-               } else if (nBytesRead < len) {
-                       
env->SetByteArrayRegion(buffer,off,nBytesRead,&aData[0]);
-               } else {
-                       env->SetByteArrayRegion(buffer,off,len,&aData[0]);
-               }
-               return nBytesRead;
-       }
-       ThrowException( env,
-                                       "java/io/IOException",
-                                       "Stream is not valid");
-       return -1;
+    return 
Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_read__Ljava_lang_String_2Ljava_lang_String_2_3BII(env,obj_this,name,key,buffer,off,len);
 }
 // 
-----------------------------------------------------------------------------
 
@@ -185,6 +161,14 @@
 JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeInputStream_close
   (JNIEnv * env, jobject obj_this,jstring key, jstring name)
 {
+#if OSL_DEBUG_LEVEL > 1
+    {
+        ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name);
+        sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input"));
+        fclose( getStreams()[sOrgName] );
+        getStreams().erase(sOrgName);
+    }
+#endif
        StorageContainer::revokeStream(env,name,key);
 }
 // 
-----------------------------------------------------------------------------
@@ -228,7 +212,7 @@
                        }
                        catch(Exception& e)
                        {
-                               OSL_ENSURE(0,"Exception catched! : 
writeBytes(aData);");
+                               OSL_ENSURE(0,"Exception catched! : skip();");
                                if (JNI_FALSE != env->ExceptionCheck())
                                        env->ExceptionClear();
                                ::rtl::OString cstr( 
::rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_JAVA_UTF8 ) );
@@ -268,7 +252,7 @@
                }
                catch(Exception& e)
                {
-                       OSL_ENSURE(0,"Exception catched! : writeBytes(aData);");
+                       OSL_ENSURE(0,"Exception catched! : available();");
                        if (JNI_FALSE != env->ExceptionCheck())
                                env->ExceptionClear();
                        ::rtl::OString cstr( 
::rtl::OUStringToOString(e.Message, RTL_TEXTENCODING_JAVA_UTF8 ) );
@@ -306,10 +290,13 @@
                Sequence< ::sal_Int8 > aData(nLen);
                
                sal_Int32 av = xIn->available();
-               if ( av != 0 && nLen > av)
+               if ( av > 0 )
+        {
+            if (nLen > av)
                        nBytesRead = xIn->readBytes(aData, av);
                else
                        nBytesRead = xIn->readBytes(aData,nLen);
+        }
            
                // Casting bytesRead to an int is okay, since the user can
                // only pass in an integer length to read, so the bytesRead 
@@ -318,7 +305,14 @@
                if (nBytesRead <= 0) {
                        return -1;
                } 
-               env->SetByteArrayRegion(buffer,0,nLen,&aData[0]);
+        OSL_ENSURE(nLen >= nBytesRead,"Buffer is too small!");
+        OSL_ENSURE(aData.getLength() >= nBytesRead,"Buffer is too small!");
+               env->SetByteArrayRegion(buffer,0,nBytesRead,&aData[0]);
+#if OSL_DEBUG_LEVEL > 1
+        ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name);
+        sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input"));
+        fwrite(&aData[0],sizeof(sal_Int8),nBytesRead,getStreams()[sOrgName]);
+#endif
        }
        return nBytesRead;
 }




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to