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

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

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

File Changes:

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

File [changed]: StorageNativeOutputStream.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/StorageNativeOutputStream.cxx?r1=1.2&r2=1.3
Delta lines:  +94 -120
----------------------
--- StorageNativeOutputStream.cxx       9 Nov 2004 12:09:35 -0000       1.2
+++ StorageNativeOutputStream.cxx       16 Feb 2005 15:52:42 -0000      1.3
@@ -69,6 +69,9 @@
 #include "cppuhelper/compbase1.hxx"
 #include "cppuhelper/component_context.hxx"
 
+#ifndef _COM_SUN_STAR_EMBED_XTRANSACTEDOBJECT_HPP_
+#include <com/sun/star/embed/XTransactedObject.hpp>
+#endif
 #ifndef _COMPHELPER_PROCESSFACTORY_HXX_
 #include <comphelper/processfactory.hxx>
 #endif
@@ -125,141 +128,121 @@
 JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_openStream
   (JNIEnv * env, jobject obj_this, jstring name, jstring key, 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(".output"));
+        ::rtl::OString sName = 
::rtl::OUStringToOString(sOrgName,RTL_TEXTENCODING_ASCII_US);
+        getStreams()[sOrgName] = fopen( sName.getStr(), "a+" );
+    }
+#endif
+       StorageContainer::registerStream(env,name,key,mode);
 }
 /*
- * Class:     
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2_3BII
+ * Class:     com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream
  * Method:    write
  * Signature: (Ljava/lang/String;Ljava/lang/String;[BII)V
  */
-JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2_3BII
-  (JNIEnv * env, jobject obj_this,jobject storage, jstring key, jstring name, 
jbyteArray buffer, jint off, jint len)
+JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__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< XOutputStream> xOut = pHelper.get() ? 
pHelper->getOutputStream() : Reference< XOutputStream>();
-       OSL_ENSURE(xOut.is(),"Stream is NULL");
-       
-       try
-       {
-               if ( xOut.is() )
-               {
-                       jbyte *buf = env->GetByteArrayElements(buffer,NULL);
-                       
-                       if (JNI_FALSE != env->ExceptionCheck())
-            {
-                env->ExceptionClear();
-                               OSL_ENSURE(0,"ExceptionClear");
-            }
-                       OSL_ENSURE(buf,"buf is NULL");
-                       if ( buf )
-                       {
-                               Sequence< ::sal_Int8 > aData(buf + off,len);
-                               xOut->writeBytes(aData);
-                               env->ReleaseByteArrayElements(buffer, buf, 
JNI_ABORT);
-                       }
-               }
-               else
-               {
-                       ThrowException( env,
-                                                       "java/io/IOException",
-                                                       "Stream is not valid");
-               }
-       }
-       catch(Exception& e)
-       {
-               OSL_ENSURE(0,"Exception catched! : write [BII)V");
-               if (JNI_FALSE != env->ExceptionCheck())
-                       env->ExceptionClear();
-               ::rtl::OString cstr( ::rtl::OUStringToOString(e.Message, 
RTL_TEXTENCODING_JAVA_UTF8 ) );
-               OSL_TRACE( __FILE__": forwarding Exception: %s", cstr.getStr() 
);
-               ThrowException( env,
-                                               "java/io/IOException",
-                                               cstr.getStr());
-       }
+       
Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_write(env,obj_this,name,key,buffer,off,len);
 }
 // 
-----------------------------------------------------------------------------
 /*
  * Class:     com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream
  * Method:    write
- * Signature: 
(Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;[B)V
+ * Signature: (Ljava/lang/String;Ljava/lang/String;[B)V
  */
-JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2_3B
-  (JNIEnv * env, jobject obj_this,jobject storage, jstring key, jstring name, 
jbyteArray buffer)
+JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2_3B
+  (JNIEnv * env, jobject obj_this, jstring key, jstring name, jbyteArray 
buffer)
+{
+    
Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_write(env,obj_this,name,key,buffer,0,env->GetArrayLength(buffer));
+}
+// 
-----------------------------------------------------------------------------
+/*
+ * Class:     com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream
+ * Method:    close
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_close
+  (JNIEnv * env, jobject obj_this, jstring key, jstring name)
 {
        ::boost::shared_ptr<StreamHelper> pHelper = 
StorageContainer::getRegisteredStream(env,name,key);
-       Reference< XOutputStream> xOut = pHelper.get() ? 
pHelper->getOutputStream() : Reference< XOutputStream>();
-       OSL_ENSURE(xOut.is(),"Stream is NULL");
+    Reference< XOutputStream> xFlush = pHelper.get() ? 
pHelper->getOutputStream() : Reference< XOutputStream>();
+    if ( xFlush.is() )
        try
        {
-               if ( xOut.is() )
-               {
-                       jsize nLen = env->GetArrayLength(buffer);
-                       jbyte *buf = env->GetByteArrayElements(buffer,NULL);
-                       OSL_ENSURE(buf,"buf is NULL");
-                       Sequence< ::sal_Int8 > aData(buf,nLen);
-                       xOut->writeBytes(aData);
-                       env->ReleaseByteArrayElements(buffer, buf, JNI_ABORT);
+            xFlush->flush();
                }
-               else
-               {
-                       ThrowException( env,
-                                                       "java/io/IOException",
-                                                       "Stream is not valid");
-               }
-       }
-       catch(Exception& e)
+        catch(Exception&)
+        {}
+
+#if OSL_DEBUG_LEVEL > 1
        {
-               OSL_ENSURE(0,"Exception catched! : writeBytes(aData); [B)V");
-               if (JNI_FALSE != env->ExceptionCheck())
-                       env->ExceptionClear();
-               ::rtl::OString cstr( ::rtl::OUStringToOString(e.Message, 
RTL_TEXTENCODING_JAVA_UTF8 ) );
-               OSL_TRACE( __FILE__": forwarding Exception: %s", cstr.getStr() 
);
-               ThrowException( env,
-                                               "java/io/IOException",
-                                               cstr.getStr());
+        ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name);
+        sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output"));
+        fclose( getStreams()[sOrgName] );
+        getStreams().erase(sOrgName);
        }
+#endif
+       StorageContainer::revokeStream(env,name,key);
 }
 // 
-----------------------------------------------------------------------------
 /*
  * Class:     com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream
- * Method:    close
- * Signature: 
(Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;)V
+ * Method:    write
+ * Signature: (Ljava/lang/String;Ljava/lang/String;I)V
  */
-JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_close
-  (JNIEnv * env, jobject obj_this,jobject storage, jstring key, jstring name)
+JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2I
+  (JNIEnv * env, jobject obj_this, jstring key, jstring name,jint b)
 {
-       
Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_close(env,obj_this,name,key);
+    
Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_writeInt(env,obj_this,name,key,b);
 }
 // 
-----------------------------------------------------------------------------
 /*
  * Class:     com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream
- * Method:    write
- * Signature: 
(Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;I)V
+ * Method:    flush
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)V
+ */
+JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_flush
+  (JNIEnv * env, jobject obj_this, jstring key, jstring name)
+{
+}
+// 
-----------------------------------------------------------------------------
+/*
+ * Class:     com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream
+ * Method:    sync
+ * Signature: (Ljava/lang/String;Ljava/lang/String;)V
  */
-JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2I
-  (JNIEnv * env, jobject obj_this,jobject storage, jstring key, jstring 
name,jint b)
+JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_sync
+  (JNIEnv * env, jobject obj_this, jstring key, jstring name)
 {
-       ::boost::shared_ptr<StreamHelper> pHelper = 
StorageContainer::getRegisteredStream(env,name,key);
-       Reference< XOutputStream> xOut = pHelper.get() ? 
pHelper->getOutputStream() : Reference< XOutputStream>();
-       OSL_ENSURE(xOut.is(),"Stream is NULL");
+       TStorages::mapped_type aStoragePair = 
StorageContainer::getRegisteredStorage(StorageContainer::jstring2ustring(env,key));
+       Reference<XTransactedObject> xTrans(aStoragePair.first.first,UNO_QUERY);
+       if ( xTrans.is() )
+       {
        try
        {
-               if ( xOut.is() )
+            TStreamMap::iterator aIter = aStoragePair.second.begin();
+            TStreamMap::iterator aEnd = aStoragePair.second.end();
+            for (;aIter != aEnd ; ++aIter)
+            {
+                ::boost::shared_ptr<StreamHelper> pHelper = aIter->second;
+                Reference< XOutputStream> xFlush = pHelper.get() ? 
pHelper->getOutputStream() : Reference< XOutputStream>();
+                if ( xFlush.is() )
+                    try
                {
-                       Sequence< ::sal_Int8 > aData(1);
-                       aData[0] = static_cast< ::sal_Int8>(b);
-                       xOut->writeBytes(aData);
+                        xFlush->flush();
                }
-               else
-               {
-                       ThrowException( env,
-                                                       "java/io/IOException",
-                                                       "Stream is not valid");
+                    catch(Exception&)
+                    {}
                }
+                       xTrans->commit();
        }
        catch(Exception& e)
        {
-               OSL_ENSURE(0,"Exception catched! : writeBytes(aData);");
+                       OSL_ENSURE(0,"Exception catched! : sync();");
                if (JNI_FALSE != env->ExceptionCheck())
                        env->ExceptionClear();
                ::rtl::OString cstr( ::rtl::OUStringToOString(e.Message, 
RTL_TEXTENCODING_JAVA_UTF8 ) );
@@ -268,15 +251,6 @@
                                                "java/io/IOException",
                                                cstr.getStr());
        }
-}
-// 
-----------------------------------------------------------------------------
-/*
- * Class:     com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream
- * Method:    flush
- * Signature: 
(Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL 
Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_flush
-  (JNIEnv * env, jobject obj_this,jobject storage, jstring key, jstring name)
-{
+       }
 }
 // 
-----------------------------------------------------------------------------




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

Reply via email to