From 7c896697f29730476ea0fc4517d94c2c8e8b2074 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Sat, 25 Oct 2014 15:22:39 +0100 Subject: coverity#706317 Uncaught exception Change-Id: I8b39addd8d4b9f7d68d0f7a317d1dff7388aba93 --- connectivity/source/drivers/jdbc/Array.cxx | 8 ++-- connectivity/source/drivers/jdbc/Blob.cxx | 6 +-- .../source/drivers/jdbc/CallableStatement.cxx | 4 +- connectivity/source/drivers/jdbc/Clob.cxx | 6 +-- .../source/drivers/jdbc/DatabaseMetaData.cxx | 16 ++++---- connectivity/source/drivers/jdbc/InputStream.cxx | 2 +- connectivity/source/drivers/jdbc/JBigDecimal.cxx | 4 +- connectivity/source/drivers/jdbc/JConnection.cxx | 2 +- connectivity/source/drivers/jdbc/JStatement.cxx | 4 +- connectivity/source/drivers/jdbc/Object.cxx | 46 ++++++++++++++-------- .../source/drivers/jdbc/PreparedStatement.cxx | 10 ++--- connectivity/source/drivers/jdbc/Reader.cxx | 4 +- connectivity/source/drivers/jdbc/ResultSet.cxx | 12 +++--- connectivity/source/drivers/jdbc/tools.cxx | 4 +- connectivity/source/inc/java/lang/Object.hxx | 7 ++-- 15 files changed, 74 insertions(+), 61 deletions(-) (limited to 'connectivity') diff --git a/connectivity/source/drivers/jdbc/Array.cxx b/connectivity/source/drivers/jdbc/Array.cxx index d3ff1baa6455..a1b3c3b7e83a 100644 --- a/connectivity/source/drivers/jdbc/Array.cxx +++ b/connectivity/source/drivers/jdbc/Array.cxx @@ -60,7 +60,7 @@ sal_Int32 SAL_CALL java_sql_Array::getBaseType( ) throw(::com::sun::star::sdbc: static const char * cSignature = "(Ljava/util/Map;)[Ljava/lang/Object;"; static const char * cMethodName = "getArray"; static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); // submit Java-Call t.pEnv->CallObjectMethod( object, mID, obj); ThrowSQLException(t.pEnv,*this); @@ -79,7 +79,7 @@ sal_Int32 SAL_CALL java_sql_Array::getBaseType( ) throw(::com::sun::star::sdbc: static const char * cMethodName = "getArray"; // submit Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); t.pEnv->CallObjectMethod( object, mID, index,count,obj); ThrowSQLException(t.pEnv,*this); // and clean up @@ -99,7 +99,7 @@ sal_Int32 SAL_CALL java_sql_Array::getBaseType( ) throw(::com::sun::star::sdbc: static const char * cMethodName = "getResultSet"; // submit Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); t.pEnv->CallObjectMethod( object, mID, obj); ThrowSQLException(t.pEnv,*this); // and cleanup @@ -119,7 +119,7 @@ sal_Int32 SAL_CALL java_sql_Array::getBaseType( ) throw(::com::sun::star::sdbc: static const char * cMethodName = "getResultSetAtIndex"; // submit Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); t.pEnv->CallObjectMethod( object, mID, index,count,obj); ThrowSQLException(t.pEnv,*this); // and cleanup diff --git a/connectivity/source/drivers/jdbc/Blob.cxx b/connectivity/source/drivers/jdbc/Blob.cxx index 50eaf103fbff..c6a29bad8c80 100644 --- a/connectivity/source/drivers/jdbc/Blob.cxx +++ b/connectivity/source/drivers/jdbc/Blob.cxx @@ -59,7 +59,7 @@ sal_Int64 SAL_CALL java_sql_Blob::length( ) throw(::com::sun::star::sdbc::SQLEx static const char * cMethodName = "length"; // submit Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); out = t.pEnv->CallLongMethod( object, mID ); ThrowSQLException(t.pEnv,*this); } //t.pEnv @@ -76,7 +76,7 @@ sal_Int64 SAL_CALL java_sql_Blob::length( ) throw(::com::sun::star::sdbc::SQLEx static const char * cMethodName = "getBytes"; // submit Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); jbyteArray out = static_cast(t.pEnv->CallObjectMethod( object, mID,pos,count)); ThrowSQLException(t.pEnv,*this); if(out) @@ -111,7 +111,7 @@ sal_Int64 SAL_CALL java_sql_Blob::position( const ::com::sun::star::uno::Sequenc static const char * cMethodName = "position"; // submit Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); // convert Parameter jbyteArray pByteArray = t.pEnv->NewByteArray(pattern.getLength()); t.pEnv->SetByteArrayRegion(pByteArray,0,pattern.getLength(),(jbyte*)pattern.getConstArray()); diff --git a/connectivity/source/drivers/jdbc/CallableStatement.cxx b/connectivity/source/drivers/jdbc/CallableStatement.cxx index a915b8c95cf4..6debd575cab2 100644 --- a/connectivity/source/drivers/jdbc/CallableStatement.cxx +++ b/connectivity/source/drivers/jdbc/CallableStatement.cxx @@ -215,7 +215,7 @@ void SAL_CALL java_sql_CallableStatement::registerOutParameter( sal_Int32 parame static const char * cMethodName = "registerOutParameter"; // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); // Convert Parameter jdbc::LocalRef< jstring > str( t.env(),convertwchar_tToJavaString(t.pEnv,typeName)); t.pEnv->CallVoidMethod( object, mID, parameterIndex,sqlType,str.get()); @@ -235,7 +235,7 @@ void SAL_CALL java_sql_CallableStatement::registerNumericOutParameter( sal_Int32 static const char * cMethodName = "registerOutParameter"; // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); t.pEnv->CallVoidMethod( object, mID, parameterIndex,sqlType,scale); ThrowLoggedSQLException( m_aLogger, t.pEnv, *this ); } diff --git a/connectivity/source/drivers/jdbc/Clob.cxx b/connectivity/source/drivers/jdbc/Clob.cxx index a157a3321b7f..cba4cf68cfe3 100644 --- a/connectivity/source/drivers/jdbc/Clob.cxx +++ b/connectivity/source/drivers/jdbc/Clob.cxx @@ -58,7 +58,7 @@ sal_Int64 SAL_CALL java_sql_Clob::length( ) throw(::com::sun::star::sdbc::SQLEx static const char * cMethodName = "length"; // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); out = t.pEnv->CallLongMethod( object, mID ); ThrowSQLException(t.pEnv,*this); } //t.pEnv @@ -75,7 +75,7 @@ OUString SAL_CALL java_sql_Clob::getSubString( sal_Int64 pos, sal_Int32 subStrin static const char * cMethodName = "getSubString"; // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); jstring out = static_cast(t.pEnv->CallObjectMethod( object, mID,pos,subStringLength)); ThrowSQLException(t.pEnv,*this); aStr = JavaString2String(t.pEnv,out); @@ -108,7 +108,7 @@ sal_Int64 SAL_CALL java_sql_Clob::position( const OUString& searchstr, sal_Int32 static const char * cMethodName = "position"; // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); out = t.pEnv->CallLongMethod( object, mID, args[0].l,start ); ThrowSQLException(t.pEnv,*this); t.pEnv->DeleteLocalRef(static_cast(args[0].l)); diff --git a/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx b/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx index 2b7e5e642199..979d06735ff8 100644 --- a/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx +++ b/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx @@ -117,7 +117,7 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getTables( { // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); OSL_VERIFY_RES( !isExceptionOccurred(t.pEnv, true),"Exception occurred!"); jvalue args[4]; @@ -346,7 +346,7 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getIndexInfo( { // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); jvalue args[5]; // convert Parameter args[0].l = catalog.hasValue() ? convertwchar_tToJavaString(t.pEnv,comphelper::getString(catalog)) : 0; @@ -387,7 +387,7 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getBestRowIdentifier { // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); jvalue args[3]; // convert Parameter args[0].l = catalog.hasValue() ? convertwchar_tToJavaString(t.pEnv,comphelper::getString(catalog)) : 0; @@ -503,7 +503,7 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getCrossReference( // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); jvalue args[6]; // convert Parameter args[0].l = primaryCatalog.hasValue() ? convertwchar_tToJavaString(t.pEnv,comphelper::getString(primaryCatalog)) : 0; @@ -631,7 +631,7 @@ Reference< XResultSet > java_sql_DatabaseMetaData::impl_callResultSetMethodWithS ? "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" : "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;"; // obtain method ID - obtainMethodId(t.pEnv, _pMethodName,pSignature, _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,pSignature, _inout_MethodID); // call method @@ -1000,7 +1000,7 @@ sal_Bool SAL_CALL java_sql_DatabaseMetaData::supportsConvert( sal_Int32 fromType { static jmethodID mID(NULL); - obtainMethodId(t.pEnv, pMethodName,"(II)Z", mID); + obtainMethodId_throwSQL(t.pEnv, pMethodName,"(II)Z", mID); out = t.pEnv->CallBooleanMethod( object, mID, fromType, toType ); ThrowLoggedSQLException( m_aLogger, t.pEnv, *this ); } @@ -1342,7 +1342,7 @@ sal_Bool SAL_CALL java_sql_DatabaseMetaData::supportsResultSetConcurrency( sal_I { static jmethodID mID(NULL); - obtainMethodId(t.pEnv, pMethodName,"(II)Z", mID); + obtainMethodId_throwSQL(t.pEnv, pMethodName,"(II)Z", mID); out = t.pEnv->CallBooleanMethod( object, mID, setType, concurrency); ThrowLoggedSQLException( m_aLogger, t.pEnv, *this ); } @@ -1424,7 +1424,7 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getUDTs( static const char * cMethodName = "getUDTs"; // dismiss Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); { jvalue args[4]; // initialize temporary Variable diff --git a/connectivity/source/drivers/jdbc/InputStream.cxx b/connectivity/source/drivers/jdbc/InputStream.cxx index f1cba905e75f..f6697d7121ea 100644 --- a/connectivity/source/drivers/jdbc/InputStream.cxx +++ b/connectivity/source/drivers/jdbc/InputStream.cxx @@ -91,7 +91,7 @@ sal_Int32 SAL_CALL java_io_InputStream::readBytes( ::com::sun::star::uno::Sequen static const char * cMethodName = "read"; // execute Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); out = t.pEnv->CallIntMethod( object, mID, pByteArray, 0, nBytesToRead ); if ( !out ) ThrowSQLException(t.pEnv,*this); diff --git a/connectivity/source/drivers/jdbc/JBigDecimal.cxx b/connectivity/source/drivers/jdbc/JBigDecimal.cxx index 4b7bc76c59f4..b65da39836af 100644 --- a/connectivity/source/drivers/jdbc/JBigDecimal.cxx +++ b/connectivity/source/drivers/jdbc/JBigDecimal.cxx @@ -48,7 +48,7 @@ java_math_BigDecimal::java_math_BigDecimal( const OUString& _par0 ): java_lang_O static const char * cSignature = "(Ljava/lang/String;)V"; jobject tempObj; static jmethodID mID(NULL); - obtainMethodId(t.pEnv, "",cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, "",cSignature, mID); jstring str = convertwchar_tToJavaString(t.pEnv,_par0.replace(',','.')); tempObj = t.pEnv->NewObject( getMyClass(), mID, str ); @@ -69,7 +69,7 @@ java_math_BigDecimal::java_math_BigDecimal( const double& _par0 ): java_lang_Obj static const char * cSignature = "(D)V"; jobject tempObj; static jmethodID mID(NULL); - obtainMethodId(t.pEnv, "",cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, "",cSignature, mID); tempObj = t.pEnv->NewObject( getMyClass(), mID, _par0 ); saveRef( t.pEnv, tempObj ); t.pEnv->DeleteLocalRef( tempObj ); diff --git a/connectivity/source/drivers/jdbc/JConnection.cxx b/connectivity/source/drivers/jdbc/JConnection.cxx index 7fe3fe8b59c2..fb3cf800fd20 100644 --- a/connectivity/source/drivers/jdbc/JConnection.cxx +++ b/connectivity/source/drivers/jdbc/JConnection.cxx @@ -540,7 +540,7 @@ OUString SAL_CALL java_sql_Connection::nativeSQL( const OUString& sql ) throw(SQ static const char * cMethodName = "nativeSQL"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); // Convert Parameter jdbc::LocalRef< jstring > str( t.env(),convertwchar_tToJavaString(t.pEnv,sql)); diff --git a/connectivity/source/drivers/jdbc/JStatement.cxx b/connectivity/source/drivers/jdbc/JStatement.cxx index dd753399cd18..4640bcd4ac7d 100644 --- a/connectivity/source/drivers/jdbc/JStatement.cxx +++ b/connectivity/source/drivers/jdbc/JStatement.cxx @@ -235,7 +235,7 @@ sal_Bool SAL_CALL java_sql_Statement_Base::execute( const OUString& sql ) throw( static const char * cMethodName = "execute"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); // convert Parameter jdbc::LocalRef< jstring > str( t.env(), convertwchar_tToJavaString( t.pEnv, sql ) ); { @@ -270,7 +270,7 @@ Reference< XResultSet > SAL_CALL java_sql_Statement_Base::executeQuery( const OU static const char * cMethodName = "executeQuery"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); // convert Parameter jdbc::LocalRef< jstring > str( t.env(), convertwchar_tToJavaString( t.pEnv, sql ) ); { diff --git a/connectivity/source/drivers/jdbc/Object.cxx b/connectivity/source/drivers/jdbc/Object.cxx index 5ca638fd7b12..cd6a5c07e022 100644 --- a/connectivity/source/drivers/jdbc/Object.cxx +++ b/connectivity/source/drivers/jdbc/Object.cxx @@ -217,7 +217,7 @@ void java_lang_Object::ThrowSQLException( JNIEnv* _pEnvironment, const Reference throw aException; } -void java_lang_Object::obtainMethodId(JNIEnv* _pEnv,const char* _pMethodName, const char* _pSignature,jmethodID& _inout_MethodID) const +void java_lang_Object::obtainMethodId_throwSQL(JNIEnv* _pEnv,const char* _pMethodName, const char* _pSignature,jmethodID& _inout_MethodID) const { if ( !_inout_MethodID ) { @@ -228,13 +228,25 @@ void java_lang_Object::obtainMethodId(JNIEnv* _pEnv,const char* _pMethodName, co } // if ( !_inout_MethodID ) } +void java_lang_Object::obtainMethodId_throwRuntime(JNIEnv* _pEnv,const char* _pMethodName, const char* _pSignature,jmethodID& _inout_MethodID) const +{ + if ( !_inout_MethodID ) + { + _inout_MethodID = _pEnv->GetMethodID( getMyClass(), _pMethodName, _pSignature ); + OSL_ENSURE( _inout_MethodID, _pSignature ); + if ( !_inout_MethodID ) + throw RuntimeException(); + } // if ( !_inout_MethodID ) +} + + bool java_lang_Object::callBooleanMethod( const char* _pMethodName, jmethodID& _inout_MethodID ) const { jboolean out( sal_False ); SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callBooleanMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"()Z", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"()Z", _inout_MethodID); // call method out = t.pEnv->CallBooleanMethod( object, _inout_MethodID ); ThrowSQLException( t.pEnv, NULL ); @@ -247,7 +259,7 @@ bool java_lang_Object::callBooleanMethodWithIntArg( const char* _pMethodName, jm jboolean out( sal_False ); SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callBooleanMethodWithIntArg: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(I)Z", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(I)Z", _inout_MethodID); // call method out = t.pEnv->CallBooleanMethod( object, _inout_MethodID, _nArgument ); ThrowSQLException( t.pEnv, NULL ); @@ -266,7 +278,7 @@ sal_Int32 java_lang_Object::callIntMethod_Throw(const char* _pMethodName, jmetho { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"()I", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"()I", _inout_MethodID); // call method jint out( t.pEnv->CallIntMethod( object, _inout_MethodID ) ); ThrowSQLException( t.pEnv, NULL ); @@ -277,7 +289,7 @@ sal_Int32 java_lang_Object::callIntMethod_Nothrow(const char* _pMethodName, jmet { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"()I", _inout_MethodID); + obtainMethodId_throwRuntime(t.pEnv, _pMethodName,"()I", _inout_MethodID); // call method jint out( t.pEnv->CallIntMethod( object, _inout_MethodID ) ); isExceptionOccurred(t.pEnv,true); @@ -288,7 +300,7 @@ sal_Int32 java_lang_Object::callIntMethodWithIntArg_Throw( const char* _pMethodN { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(I)I", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(I)I", _inout_MethodID); // call method jint out( t.pEnv->CallIntMethod( object, _inout_MethodID , _nArgument) ); ThrowSQLException( t.pEnv, NULL ); @@ -299,7 +311,7 @@ sal_Int32 java_lang_Object::callIntMethodWithIntArg_Nothrow( const char* _pMetho { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(I)I", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(I)I", _inout_MethodID); // call method jint out( t.pEnv->CallIntMethod( object, _inout_MethodID , _nArgument) ); isExceptionOccurred(t.pEnv,true); @@ -310,7 +322,7 @@ void java_lang_Object::callVoidMethod_Throw( const char* _pMethodName, jmethodID { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"()V", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"()V", _inout_MethodID); // call method t.pEnv->CallVoidMethod( object, _inout_MethodID ); @@ -321,7 +333,7 @@ void java_lang_Object::callVoidMethod_Nothrow( const char* _pMethodName, jmethod { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"()V", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"()V", _inout_MethodID); // call method t.pEnv->CallVoidMethod( object, _inout_MethodID ); @@ -332,7 +344,7 @@ void java_lang_Object::callVoidMethodWithIntArg_Throw( const char* _pMethodName, { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(I)V", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(I)V", _inout_MethodID); // call method t.pEnv->CallVoidMethod( object, _inout_MethodID,_nArgument ); @@ -343,7 +355,7 @@ void java_lang_Object::callVoidMethodWithIntArg_Nothrow( const char* _pMethodNam { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(I)V", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(I)V", _inout_MethodID); // call method t.pEnv->CallVoidMethod( object, _inout_MethodID,_nArgument ); @@ -354,7 +366,7 @@ void java_lang_Object::callVoidMethodWithBoolArg_Throw( const char* _pMethodName { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(Z)V", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(Z)V", _inout_MethodID); // call method t.pEnv->CallVoidMethod( object, _inout_MethodID,int(_nArgument) ); ThrowSQLException( t.pEnv, NULL ); @@ -364,7 +376,7 @@ void java_lang_Object::callVoidMethodWithBoolArg_Nothrow( const char* _pMethodNa { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(Z)V", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(Z)V", _inout_MethodID); // call method t.pEnv->CallVoidMethod( object, _inout_MethodID,int(_nArgument) ); isExceptionOccurred(t.pEnv,true); @@ -383,7 +395,7 @@ OUString java_lang_Object::callStringMethod( const char* _pMethodName, jmethodID jobject java_lang_Object::callObjectMethod( JNIEnv * _pEnv,const char* _pMethodName,const char* _pSignature, jmethodID& _inout_MethodID ) const { // obtain method ID - obtainMethodId(_pEnv, _pMethodName,_pSignature, _inout_MethodID); + obtainMethodId_throwSQL(_pEnv, _pMethodName,_pSignature, _inout_MethodID); // call method jobject out = _pEnv->CallObjectMethod( object, _inout_MethodID); ThrowSQLException( _pEnv, NULL ); @@ -393,7 +405,7 @@ jobject java_lang_Object::callObjectMethod( JNIEnv * _pEnv,const char* _pMethodN jobject java_lang_Object::callObjectMethodWithIntArg( JNIEnv * _pEnv,const char* _pMethodName,const char* _pSignature, jmethodID& _inout_MethodID , sal_Int32 _nArgument) const { - obtainMethodId(_pEnv, _pMethodName,_pSignature, _inout_MethodID); + obtainMethodId_throwSQL(_pEnv, _pMethodName,_pSignature, _inout_MethodID); // call method jobject out = _pEnv->CallObjectMethod( object, _inout_MethodID,_nArgument ); ThrowSQLException( _pEnv, NULL ); @@ -412,7 +424,7 @@ void java_lang_Object::callVoidMethodWithStringArg( const char* _pMethodName, jm { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethod: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(Ljava/lang/String;)V", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(Ljava/lang/String;)V", _inout_MethodID); jdbc::LocalRef< jstring > str( t.env(),convertwchar_tToJavaString(t.pEnv,_nArgument)); // call method @@ -424,7 +436,7 @@ sal_Int32 java_lang_Object::callIntMethodWithStringArg( const char* _pMethodName { SDBThreadAttach t; OSL_ENSURE( t.pEnv, "java_lang_Object::callIntMethodWithStringArg: no Java environment anymore!" ); - obtainMethodId(t.pEnv, _pMethodName,"(Ljava/lang/String;)I", _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(Ljava/lang/String;)I", _inout_MethodID); //TODO: Check if the code below is needed //jdbc::LocalRef< jstring > str( t.env(), convertwchar_tToJavaString( t.pEnv, sql ) ); diff --git a/connectivity/source/drivers/jdbc/PreparedStatement.cxx b/connectivity/source/drivers/jdbc/PreparedStatement.cxx index 29926581c246..41d6ab87d2a4 100644 --- a/connectivity/source/drivers/jdbc/PreparedStatement.cxx +++ b/connectivity/source/drivers/jdbc/PreparedStatement.cxx @@ -130,7 +130,7 @@ void SAL_CALL java_sql_PreparedStatement::setString( sal_Int32 parameterIndex, c static const char * cMethodName = "setString"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); jdbc::LocalRef< jstring > str( t.env(),convertwchar_tToJavaString(t.pEnv,x)); t.pEnv->CallVoidMethod( object, mID, parameterIndex,str.get()); // and clean up @@ -332,7 +332,7 @@ void SAL_CALL java_sql_PreparedStatement::setObjectWithInfo( sal_Int32 parameter static const char * cMethodName = "setObject"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); { jobject obj = NULL; double nTemp = 0.0; @@ -430,7 +430,7 @@ void SAL_CALL java_sql_PreparedStatement::setBytes( sal_Int32 parameterIndex, co static const char * cMethodName = "setBytes"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); jbyteArray pByteArray = t.pEnv->NewByteArray(x.getLength()); t.pEnv->SetByteArrayRegion(pByteArray,0,x.getLength(),(jbyte*)x.getConstArray()); t.pEnv->CallVoidMethod( object, mID, parameterIndex,pByteArray); @@ -456,7 +456,7 @@ void SAL_CALL java_sql_PreparedStatement::setCharacterStream( sal_Int32 paramete static const char * cMethodName = "setCharacterStream"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); Sequence< sal_Int8 > aSeq; if ( x.is() ) x->readBytes( aSeq, length ); @@ -503,7 +503,7 @@ void SAL_CALL java_sql_PreparedStatement::setBinaryStream( sal_Int32 parameterIn static const char * cMethodName = "setBinaryStream"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); { Sequence< sal_Int8 > aSeq; if ( x.is() ) diff --git a/connectivity/source/drivers/jdbc/Reader.cxx b/connectivity/source/drivers/jdbc/Reader.cxx index b62da3a64781..02114d4a9306 100644 --- a/connectivity/source/drivers/jdbc/Reader.cxx +++ b/connectivity/source/drivers/jdbc/Reader.cxx @@ -65,7 +65,7 @@ sal_Int32 SAL_CALL java_io_Reader::available( ) throw(::com::sun::star::io::Not static const char * cMethodName = "available"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); out = t.pEnv->CallBooleanMethod( object, mID); ThrowSQLException(t.pEnv,*this); } //t.pEnv @@ -90,7 +90,7 @@ sal_Int32 SAL_CALL java_io_Reader::readBytes( ::com::sun::star::uno::Sequence< s static const char * cMethodName = "read"; // Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); out = t.pEnv->CallIntMethod( object, mID, pCharArray, 0, nBytesToRead ); if ( !out ) ThrowSQLException(t.pEnv,*this); diff --git a/connectivity/source/drivers/jdbc/ResultSet.cxx b/connectivity/source/drivers/jdbc/ResultSet.cxx index 0f20a75b542c..361e4b4f63be 100644 --- a/connectivity/source/drivers/jdbc/ResultSet.cxx +++ b/connectivity/source/drivers/jdbc/ResultSet.cxx @@ -304,7 +304,7 @@ Any SAL_CALL java_sql_ResultSet::getObject( sal_Int32 columnIndex, const Referen static const char * cSignature = "(I)Ljava/lang/Object;"; static const char * cMethodName = "getObject"; - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); } out = t.pEnv->CallObjectMethodA( object, mID, args); @@ -634,7 +634,7 @@ void SAL_CALL java_sql_ResultSet::updateString( sal_Int32 columnIndex, const OUS static const char * cSignature = "(ILjava/lang/String;)V"; static const char * cMethodName = "updateString"; - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); } { @@ -660,7 +660,7 @@ void SAL_CALL java_sql_ResultSet::updateBytes( sal_Int32 columnIndex, const ::co static const char * cSignature = "(I[B)V"; static const char * cMethodName = "updateBytes"; - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); } { @@ -713,7 +713,7 @@ void SAL_CALL java_sql_ResultSet::updateBinaryStream( sal_Int32 columnIndex, con { static const char * cSignature = "(ILjava/io/InputStream;I)V"; static const char * cMethodName = "updateBinaryStream"; - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); } { @@ -744,7 +744,7 @@ void SAL_CALL java_sql_ResultSet::updateCharacterStream( sal_Int32 columnIndex, { static const char * cSignature = "(ILjava/io/Reader;I)V"; static const char * cMethodName = "updateCharacterStream"; - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); } { @@ -792,7 +792,7 @@ void SAL_CALL java_sql_ResultSet::updateNumericObject( sal_Int32 columnIndex, co static const char * cSignature = "(ILjava/lang/Object;I)V"; static const char * cMethodName = "updateObject"; - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); } { diff --git a/connectivity/source/drivers/jdbc/tools.cxx b/connectivity/source/drivers/jdbc/tools.cxx index 46cc4c4f49c7..ee21f0703797 100644 --- a/connectivity/source/drivers/jdbc/tools.cxx +++ b/connectivity/source/drivers/jdbc/tools.cxx @@ -50,7 +50,7 @@ void java_util_Properties::setProperty(const OUString& key, const OUString& valu static const char * cMethodName = "setProperty"; // Turn off Java-Call static jmethodID mID(NULL); - obtainMethodId(t.pEnv, cMethodName,cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, cMethodName,cSignature, mID); out = t.pEnv->CallObjectMethod(object, mID, args[0].l,args[1].l); ThrowSQLException(t.pEnv,NULL); t.pEnv->DeleteLocalRef(static_cast(args[1].l)); @@ -85,7 +85,7 @@ java_util_Properties::java_util_Properties( ): java_lang_Object( NULL, (jobject) static const char * cSignature = "()V"; jobject tempObj; static jmethodID mID(NULL); - obtainMethodId(t.pEnv, "",cSignature, mID); + obtainMethodId_throwSQL(t.pEnv, "",cSignature, mID); tempObj = t.pEnv->NewObject( getMyClass(), mID); saveRef( t.pEnv, tempObj ); t.pEnv->DeleteLocalRef( tempObj ); diff --git a/connectivity/source/inc/java/lang/Object.hxx b/connectivity/source/inc/java/lang/Object.hxx index 28b4e438490d..0d524aeb1893 100644 --- a/connectivity/source/inc/java/lang/Object.hxx +++ b/connectivity/source/inc/java/lang/Object.hxx @@ -109,7 +109,8 @@ namespace connectivity static ::rtl::Reference< jvmaccess::VirtualMachine > getVM(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& _rxContext=NULL); static jclass findMyClass(const char* _pClassName); - void obtainMethodId(JNIEnv* _pEnv, const char* _pMethodName, const char* _pSignature, jmethodID& _inout_MethodID) const; + void obtainMethodId_throwSQL(JNIEnv* _pEnv, const char* _pMethodName, const char* _pSignature, jmethodID& _inout_MethodID) const; + void obtainMethodId_throwRuntime(JNIEnv* _pEnv, const char* _pMethodName, const char* _pSignature, jmethodID& _inout_MethodID) const; bool callBooleanMethod( const char* _pMethodName, jmethodID& _inout_MethodID ) const; bool callBooleanMethodWithIntArg( const char* _pMethodName, jmethodID& _inout_MethodID, sal_Int32 _nArgument ) const; @@ -135,7 +136,7 @@ namespace connectivity T callMethodWithIntArg(T (JNIEnv::*pCallMethod)( jobject obj, jmethodID methodID, ... ) ,const char* _pMethodName, const char* _pSignature, jmethodID& _inout_MethodID , sal_Int32 _nArgument) const { SDBThreadAttach t; - obtainMethodId(t.pEnv, _pMethodName,_pSignature, _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,_pSignature, _inout_MethodID); T out = (t.pEnv->*pCallMethod)( object, _inout_MethodID,_nArgument); ThrowSQLException( t.pEnv, NULL ); return out; @@ -145,7 +146,7 @@ namespace connectivity void callVoidMethod_Throw(const char* _pMethodName, const char* _pSignature, jmethodID& _inout_MethodID,sal_Int32 _nArgument, const T& _aValue) const { SDBThreadAttach t; - obtainMethodId(t.pEnv, _pMethodName,_pSignature, _inout_MethodID); + obtainMethodId_throwSQL(t.pEnv, _pMethodName,_pSignature, _inout_MethodID); t.pEnv->CallVoidMethod( object, _inout_MethodID,_nArgument,_aValue); ThrowSQLException( t.pEnv, NULL ); } -- cgit