Tag: cws_src680_hsqldb2 User: oj Date: 05/01/28 04:21:58 Modified: /dba/connectivity/source/drivers/hsqldb/ HConnection.cxx, HDriver.cxx, HStorageAccess.cxx, HStorageMap.cxx, StorageNativeInputStream.cxx, StorageNativeOutputStream.cxx, StorageNativeOutputStream.h, exports.dxp, hsqldb.map
Log: #i39922# new interfaces in hsqldb and some debug info File Changes: Directory: /dba/connectivity/source/drivers/hsqldb/ =================================================== File [changed]: HConnection.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/HConnection.cxx?r1=1.1.4.1&r2=1.1.4.2 Delta lines: +4 -4 ------------------- --- HConnection.cxx 19 Jan 2005 07:03:25 -0000 1.1.4.1 +++ HConnection.cxx 28 Jan 2005 12:21:53 -0000 1.1.4.2 @@ -2,9 +2,9 @@ * * $RCSfile: HConnection.cxx,v $ * - * $Revision: 1.1.4.1 $ + * $Revision: 1.1.4.2 $ * - * last change: $Author: oj $ $Date: 2005/01/19 07:03:25 $ + * last change: $Author: oj $ $Date: 2005/01/28 12:21:53 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -108,7 +108,7 @@ { ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement> xStmt = m_xConnection->createStatement(); if ( xStmt.is() ) - xStmt->execute(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SET WRITE_DELAY 0"))); + xStmt->execute(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SET WRITE_DELAY 60"))); } } catch(::com::sun::star::uno::Exception&) File [changed]: HDriver.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/HDriver.cxx?r1=1.2.20.2&r2=1.2.20.3 Delta lines: +7 -4 ------------------- --- HDriver.cxx 26 Jan 2005 06:54:07 -0000 1.2.20.2 +++ HDriver.cxx 28 Jan 2005 12:21:54 -0000 1.2.20.3 @@ -256,6 +256,11 @@ { xOrig = xDriver->connect( sConnectURL, aConvertedProperties ); } + catch(SQLException e) + { + StorageContainer::revokeStorage(sKey,NULL); + throw e; + } catch(Exception e) { StorageContainer::revokeStorage(sKey,NULL); @@ -277,7 +282,6 @@ Reference<XComponent> xComp(xOrig,UNO_QUERY); if ( xComp.is() ) xComp->addEventListener(this); - m_aConnections.push_back(TWeakPair(WeakReferenceHelper(xOrig),TWeakConnectionPair(sKey,pMetaConnection))); // we want to close all connections when the office shuts down static Reference< XTerminateListener> s_xTerminateListener; @@ -293,6 +297,7 @@ } Reference< XComponent> xIfc = new OConnectionWeakWrapper(xOrig,m_xFactory); xConnection.set(xIfc,UNO_QUERY); + m_aConnections.push_back(TWeakPair(WeakReferenceHelper(xOrig),TWeakConnectionPair(sKey,WeakReferenceHelper(xConnection)))); Reference<XTransactionBroadcaster> xBroad(xStorage,UNO_QUERY); if ( xBroad.is() ) @@ -478,12 +483,10 @@ ::std::bind2nd(::std::equal_to< ::rtl::OUString >(),sKey) ,::std::compose1(::std::select1st<TWeakConnectionPair>(),::std::select2nd< TWeakPair >()))); if ( i != m_aConnections.end() ) - { shutdownConnection(i); } } } - } //------------------------------------------------------------------ void ODriverDelegator::shutdownConnections() { @@ -522,7 +525,7 @@ { Reference< XStatement> xStmt = xConnection->createStatement(); if ( xStmt.is() ) - xStmt->execute(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SET WRITE_DELAY 0"))); + xStmt->execute(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SET WRITE_DELAY 60"))); } } catch(Exception&) File [changed]: HStorageAccess.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/HStorageAccess.cxx?r1=1.2.20.2&r2=1.2.20.3 Delta lines: +96 -5 -------------------- --- HStorageAccess.cxx 25 Jan 2005 08:42:51 -0000 1.2.20.2 +++ HStorageAccess.cxx 28 Jan 2005 12:21:54 -0000 1.2.20.3 @@ -95,6 +95,15 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_openStream (JNIEnv * env, jobject obj_this,jstring name, jstring key, jint mode) { +#if OSL_DEBUG_LEVEL > 1 + { + ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + ::rtl::OString sName = ::rtl::OUStringToOString(sOrgName,RTL_TEXTENCODING_ASCII_US); + getStreams()[sOrgName] = fopen( sName.getStr(), "a+" ); + } +#endif + StorageContainer::registerStream(env,name,key,mode); } // ----------------------------------------------------------------------------- @@ -106,6 +115,24 @@ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_close (JNIEnv * env, jobject obj_this,jstring name, jstring key) { + ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); + Reference< XOutputStream> xFlush = pHelper.get() ? pHelper->getOutputStream() : Reference< XOutputStream>(); + if ( xFlush.is() ) + try + { + xFlush->flush(); + } + catch(Exception&) + {} +#if OSL_DEBUG_LEVEL > 1 + { + ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + fclose( getStreams()[sOrgName] ); + getStreams().erase(sOrgName); + } +#endif + StorageContainer::revokeStream(env,name,key); } // ----------------------------------------------------------------------------- @@ -171,8 +198,12 @@ if (tmpInt < 0 ){ tmpInt = 256 +tmpInt; } -#if OSL_DEBUG_LEVEL > 0 +#if OSL_DEBUG_LEVEL > 1 ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + else + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input")); fputc(tmpInt,getStreams()[sOrgName]); #endif return(tmpInt); @@ -229,8 +260,12 @@ OSL_ENSURE(aData.getLength() >= nBytesRead,"Buffer is too small!"); env->SetByteArrayRegion(buffer,off,nBytesRead,&aData[0]); -#if OSL_DEBUG_LEVEL > 0 +#if OSL_DEBUG_LEVEL > 1 ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + else + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input")); fwrite(&aData[0],sizeof(sal_Int8),nBytesRead,getStreams()[sOrgName]); #endif } @@ -296,8 +331,12 @@ return -1; } jint nRet = ((ch[0] << 24) + (ch[1] << 16) + (ch[2] << 8) + (ch[3] << 0)); -#if OSL_DEBUG_LEVEL > 0 +#if OSL_DEBUG_LEVEL > 1 ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + else + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".input")); fputc(nRet,getStreams()[sOrgName]); #endif return nRet; @@ -329,6 +368,17 @@ if ( nLen < position) { static ::sal_Int64 BUFFER_SIZE = 9192; +#if OSL_DEBUG_LEVEL > 1 + { + ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + else + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); + int errr = fseek(getStreams()[sOrgName],nLen,SEEK_SET); + } +#endif + xSeek->seek(nLen); Reference< XOutputStream> xOut = pHelper->getOutputStream(); OSL_ENSURE(xOut.is(),"No output stream!"); @@ -350,11 +400,28 @@ Sequence< ::sal_Int8 > aData(n); memset(aData.getArray(),0,n); xOut->writeBytes(aData); +#if OSL_DEBUG_LEVEL > 1 + ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + else + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); + fwrite(&aData[0],sizeof(sal_Int8),n,getStreams()[sOrgName]); +#endif } } - xSeek->seek(position); OSL_ENSURE(xSeek->getPosition() == position,"Wrong position after seeking the stream"); + +#if OSL_DEBUG_LEVEL > 1 + ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + else + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); + int errr = fseek(getStreams()[sOrgName],position,SEEK_SET); + OSL_ENSURE(xSeek->getPosition() == ftell(getStreams()[sOrgName]),"Wrong position after seeking the stream"); +#endif } } // ----------------------------------------------------------------------------- @@ -376,6 +443,9 @@ if ( xOut.is() ) { jbyte *buf = env->GetByteArrayElements(buffer,NULL); +#if OSL_DEBUG_LEVEL > 1 + OSL_ENSURE(len <= env->GetArrayLength(buffer),"Length is greater than the buffer!"); +#endif if (JNI_FALSE != env->ExceptionCheck()) { @@ -385,9 +455,21 @@ OSL_ENSURE(buf,"buf is NULL"); if ( buf ) { +#if OSL_DEBUG_LEVEL > 1 + ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + sal_Bool bCheck; + if ( bCheck = (getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end()) ) + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + else + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); +#endif + Sequence< ::sal_Int8 > aData(buf + off,len); xOut->writeBytes(aData); env->ReleaseByteArrayElements(buffer, buf, JNI_ABORT); +#if OSL_DEBUG_LEVEL > 1 + fwrite(&aData[off],sizeof(sal_Int8),len,getStreams()[sOrgName]); +#endif } } else @@ -433,6 +515,15 @@ oneByte[3] = (sal_Int8) ((v >> 0) & 0xFF); xOut->writeBytes(oneByte); +#if OSL_DEBUG_LEVEL > 1 + ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); + if ( getStreams().find(sOrgName + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data"))) != getStreams().end() ) + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".data")); + else + sOrgName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".output")); + + fwrite(&oneByte[0],sizeof(sal_Int8),4,getStreams()[sOrgName]); +#endif } else { File [changed]: HStorageMap.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/HStorageMap.cxx?r1=1.2.20.2&r2=1.2.20.3 Delta lines: +3 -17 -------------------- --- HStorageMap.cxx 25 Jan 2005 08:42:51 -0000 1.2.20.2 +++ HStorageMap.cxx 28 Jan 2005 12:21:54 -0000 1.2.20.3 @@ -284,13 +284,6 @@ // ----------------------------------------------------------------------------- TStreamMap::mapped_type StorageContainer::registerStream(JNIEnv * env,jstring name, jstring key,sal_Int32 _nMode) { -#if OSL_DEBUG_LEVEL > 0 - { - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - ::rtl::OString sName = ::rtl::OUStringToOString(sOrgName,RTL_TEXTENCODING_ASCII_US); - getStreams()[sOrgName] = fopen( sName.getStr(), "a+" ); - } -#endif TStreamMap::mapped_type pHelper; TStorages& rMap = lcl_getStorageMap(); ::rtl::OUString sKey = jstring2ustring(env,key); @@ -344,13 +337,6 @@ // ----------------------------------------------------------------------------- void StorageContainer::revokeStream( JNIEnv * env,jstring name, jstring key) { -#if OSL_DEBUG_LEVEL > 0 - { - ::rtl::OUString sOrgName = StorageContainer::jstring2ustring(env,name); - fclose( getStreams()[sOrgName] ); - getStreams().erase(sOrgName); - } -#endif TStorages& rMap = lcl_getStorageMap(); TStorages::iterator aFind = rMap.find(jstring2ustring(env,key)); OSL_ENSURE(aFind != rMap.end(),"Storage could not be found in list!"); @@ -381,10 +367,10 @@ } // namespace connectivity //........................................................................ -#if OSL_DEBUG_LEVEL > 0 -TStreamMap& getStreams() +#if OSL_DEBUG_LEVEL > 1 +TDebugStreamMap& getStreams() { - static TStreamMap streams; + static TDebugStreamMap streams; return streams; } #endif File [changed]: StorageNativeInputStream.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/StorageNativeInputStream.cxx?r1=1.2.20.1&r2=1.2.20.2 Delta lines: +21 -4 -------------------- --- StorageNativeInputStream.cxx 25 Jan 2005 08:42:51 -0000 1.2.20.1 +++ StorageNativeInputStream.cxx 28 Jan 2005 12:21:54 -0000 1.2.20.2 @@ -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); } // ----------------------------------------------------------------------------- @@ -153,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); } // ----------------------------------------------------------------------------- @@ -196,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 ) ); @@ -236,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 ) ); @@ -292,8 +308,9 @@ 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 > 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 } File [changed]: StorageNativeOutputStream.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/StorageNativeOutputStream.cxx?r1=1.2.20.1&r2=1.2.20.2 Delta lines: +61 -120 ---------------------- --- StorageNativeOutputStream.cxx 25 Jan 2005 08:42:52 -0000 1.2.20.1 +++ StorageNativeOutputStream.cxx 28 Jan 2005 12:21:55 -0000 1.2.20.2 @@ -128,168 +128,95 @@ 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) { - ::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() ) - { - 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); - } - else - { - ThrowException( env, - "java/io/IOException", - "Stream is not valid"); - } - } - catch(Exception& e) - { - 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()); - } + 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: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;)V + * 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,jobject storage, jstring key, jstring name) + (JNIEnv * env, jobject obj_this, jstring key, jstring name) { - Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_close(env,obj_this,name,key); + ::boost::shared_ptr<StreamHelper> pHelper = StorageContainer::getRegisteredStream(env,name,key); + Reference< XOutputStream> xFlush = pHelper.get() ? pHelper->getOutputStream() : Reference< XOutputStream>(); + if ( xFlush.is() ) + try + { + xFlush->flush(); + } + catch(Exception&) + {} + +#if OSL_DEBUG_LEVEL > 1 + { + ::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: write - * Signature: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;I)V + * Signature: (Ljava/lang/String;Ljava/lang/String;I)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_write__Ljava_lang_String_2Ljava_lang_String_2I + (JNIEnv * env, jobject obj_this, jstring key, jstring name,jint b) { - ::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() ) - { - Sequence< ::sal_Int8 > aData(1); - aData[0] = static_cast< ::sal_Int8>(b); - xOut->writeBytes(aData); - } - else - { - ThrowException( env, - "java/io/IOException", - "Stream is not valid"); - } - } - catch(Exception& e) - { - OSL_ENSURE(0,"Exception catched! : writeBytes(aData);"); - 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_writeInt(env,obj_this,name,key,b); } // ----------------------------------------------------------------------------- /* * Class: com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream * Method: flush - * Signature: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;)V + * 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,jobject storage, jstring key, jstring name) + (JNIEnv * env, jobject obj_this, jstring key, jstring name) { } // ----------------------------------------------------------------------------- /* * Class: com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream * Method: sync - * Signature: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;)V + * Signature: (Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_sync - (JNIEnv * env, jobject obj_this,jobject storage, jstring key, jstring name) + (JNIEnv * env, jobject obj_this, jstring key, jstring name) { TStorages::mapped_type aStoragePair = StorageContainer::getRegisteredStorage(StorageContainer::jstring2ustring(env,key)); Reference<XTransactedObject> xTrans(aStoragePair.first.first,UNO_QUERY); @@ -297,11 +224,25 @@ { try { + 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 + { + xFlush->flush(); + } + 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 ) ); File [changed]: StorageNativeOutputStream.h Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/StorageNativeOutputStream.h?r1=1.2.20.1&r2=1.2.20.2 Delta lines: +16 -15 --------------------- --- StorageNativeOutputStream.h 25 Jan 2005 08:42:52 -0000 1.2.20.1 +++ StorageNativeOutputStream.h 28 Jan 2005 12:21:55 -0000 1.2.20.2 @@ -7,6 +7,7 @@ #ifdef __cplusplus extern "C" { #endif +/* Inaccessible static: class_00024com_00024sun_00024star_00024sdbcx_00024comp_00024hsqldb_00024StorageNativeOutputStream */ /* * Class: com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream * Method: openStream @@ -18,50 +19,50 @@ /* * Class: com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream * Method: write - * Signature: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;[BII)V + * 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 *, jobject, jobject, jstring, jstring, jbyteArray, jint, jint); +JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2_3BII + (JNIEnv *, jobject, jstring, jstring, jbyteArray, jint, jint); /* * 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 *, jobject, jobject, jstring, jstring, jbyteArray); +JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2_3B + (JNIEnv *, jobject, jstring, jstring, jbyteArray); /* * Class: com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream * Method: close - * Signature: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;)V + * Signature: (Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_close - (JNIEnv *, jobject, jobject, jstring, jstring); + (JNIEnv *, jobject, jstring, jstring); /* * Class: com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream * Method: write - * Signature: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;I)V + * Signature: (Ljava/lang/String;Ljava/lang/String;I)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 *, jobject, jobject, jstring, jstring, jint); +JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2I + (JNIEnv *, jobject, jstring, jstring, jint); /* * Class: com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream * Method: flush - * Signature: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;)V + * Signature: (Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_flush - (JNIEnv *, jobject, jobject, jstring, jstring); + (JNIEnv *, jobject, jstring, jstring); /* * Class: com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream * Method: sync - * Signature: (Lcom/sun/star/embed/XStorage;Ljava/lang/String;Ljava/lang/String;)V + * Signature: (Ljava/lang/String;Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_sync - (JNIEnv *, jobject, jobject, jstring, jstring); + (JNIEnv *, jobject, jstring, jstring); #ifdef __cplusplus } File [changed]: exports.dxp Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/exports.dxp?r1=1.2&r2=1.2.20.1 Delta lines: +5 -4 ------------------- --- exports.dxp 9 Nov 2004 12:09:57 -0000 1.2 +++ exports.dxp 28 Jan 2005 12:21:55 -0000 1.2.20.1 @@ -1,12 +1,13 @@ component_getImplementationEnvironment component_writeInfo component_getFactory -Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2_3BII -Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2_3B +Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_openStream +Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2_3BII +Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2_3B Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_close -Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2I +Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2I Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_flush -Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_openStream +Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_sync Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_openStream Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_close Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_getFilePointer File [changed]: hsqldb.map Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/hsqldb/hsqldb.map?r1=1.2&r2=1.2.20.1 Delta lines: +5 -4 ------------------- --- hsqldb.map 9 Nov 2004 12:10:08 -0000 1.2 +++ hsqldb.map 28 Jan 2005 12:21:55 -0000 1.2.20.1 @@ -3,12 +3,13 @@ component_getImplementationEnvironment; component_writeInfo; component_getFactory; - Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2_3BII; - Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2_3B; + Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_openStream; + Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2_3BII; + Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2_3B; Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_close; - Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Lcom_sun_star_embed_XStorage_2Ljava_lang_String_2Ljava_lang_String_2I; + Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_write__Ljava_lang_String_2Ljava_lang_String_2I; Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_flush; - Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_openStream; + Java_com_sun_star_sdbcx_comp_hsqldb_StorageNativeOutputStream_sync; Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_openStream; Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_close; Java_com_sun_star_sdbcx_comp_hsqldb_NativeStorageAccess_getFilePointer; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
