diff options
author | Noel Grandin <noel@peralex.com> | 2012-10-12 11:44:23 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2012-10-23 13:06:14 +0200 |
commit | b30ee83058793ea8fbb020e5ac8f118bd20853d5 (patch) | |
tree | c187507f36c6288e5f4ede78a0d5e33876f7b3f1 /sc | |
parent | 5e48667f6bdd2f5e05b3f41d080fda06bd3d7c16 (diff) |
fdo#46808, use service constructor for beans::Introspection
Change-Id: Ieb49277020d31779979d8eb508391d6f8b97bf94
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/tool/addincol.cxx | 548 | ||||
-rw-r--r-- | sc/source/ui/vba/vbahelper.cxx | 6 |
2 files changed, 270 insertions, 284 deletions
diff --git a/sc/source/core/tool/addincol.cxx b/sc/source/core/tool/addincol.cxx index 6736d74d4591..4ca1cffeb46f 100644 --- a/sc/source/core/tool/addincol.cxx +++ b/sc/source/core/tool/addincol.cxx @@ -38,7 +38,7 @@ #include <com/sun/star/lang/XSingleComponentFactory.hpp> #include <com/sun/star/reflection/XIdlClass.hpp> #include <com/sun/star/beans/XIntrospectionAccess.hpp> -#include <com/sun/star/beans/XIntrospection.hpp> +#include <com/sun/star/beans/Introspection.hpp> #include <com/sun/star/beans/MethodConcept.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/table/XCellRange.hpp> @@ -800,216 +800,209 @@ void ScUnoAddInCollection::ReadFromAddIn( const uno::Reference<uno::XInterface>& //! pass XIntrospection to ReadFromAddIn - uno::Reference<lang::XMultiServiceFactory> xManager = comphelper::getProcessServiceFactory(); - if ( xManager.is() ) + uno::Reference<uno::XComponentContext> xContext = comphelper::getProcessComponentContext(); + + uno::Reference<beans::XIntrospection> xIntro = beans::Introspection::create( xContext ); + uno::Any aObject; + aObject <<= xAddIn; + uno::Reference<beans::XIntrospectionAccess> xAcc = xIntro->inspect(aObject); + if (xAcc.is()) { - uno::Reference<beans::XIntrospection> xIntro( - xManager->createInstance(rtl::OUString("com.sun.star.beans.Introspection")), - uno::UNO_QUERY ); - if ( xIntro.is() ) + uno::Sequence< uno::Reference<reflection::XIdlMethod> > aMethods = + xAcc->getMethods( beans::MethodConcept::ALL ); + long nNewCount = aMethods.getLength(); + if ( nNewCount ) { - uno::Any aObject; - aObject <<= xAddIn; - uno::Reference<beans::XIntrospectionAccess> xAcc = xIntro->inspect(aObject); - if (xAcc.is()) + long nOld = nFuncCount; + nFuncCount = nNewCount+nOld; + if ( nOld ) + { + ScUnoAddInFuncData** ppNew = new ScUnoAddInFuncData*[nFuncCount]; + for (long i=0; i<nOld; i++) + ppNew[i] = ppFuncData[i]; + delete[] ppFuncData; + ppFuncData = ppNew; + } + else + ppFuncData = new ScUnoAddInFuncData*[nFuncCount]; + + //! TODO: adjust bucket count? + if ( !pExactHashMap ) + pExactHashMap = new ScAddInHashMap; + if ( !pNameHashMap ) + pNameHashMap = new ScAddInHashMap; + if ( !pLocalHashMap ) + pLocalHashMap = new ScAddInHashMap; + + const uno::Reference<reflection::XIdlMethod>* pArray = aMethods.getConstArray(); + for (long nFuncPos=0; nFuncPos<nNewCount; nFuncPos++) { - uno::Sequence< uno::Reference<reflection::XIdlMethod> > aMethods = - xAcc->getMethods( beans::MethodConcept::ALL ); - long nNewCount = aMethods.getLength(); - if ( nNewCount ) + ppFuncData[nFuncPos+nOld] = NULL; + + uno::Reference<reflection::XIdlMethod> xFunc = pArray[nFuncPos]; + if (xFunc.is()) { - long nOld = nFuncCount; - nFuncCount = nNewCount+nOld; - if ( nOld ) + // leave out internal functions + uno::Reference<reflection::XIdlClass> xClass = + xFunc->getDeclaringClass(); + sal_Bool bSkip = sal_True; + if ( xClass.is() ) { - ScUnoAddInFuncData** ppNew = new ScUnoAddInFuncData*[nFuncCount]; - for (long i=0; i<nOld; i++) - ppNew[i] = ppFuncData[i]; - delete[] ppFuncData; - ppFuncData = ppNew; + //! XIdlClass needs getType() method! + rtl::OUString sName = xClass->getName(); + bSkip = ( + IsTypeName( sName, + getCppuType((uno::Reference<uno::XInterface>*)0) ) || + IsTypeName( sName, + getCppuType((uno::Reference<lang::XServiceName>*)0) ) || + IsTypeName( sName, + getCppuType((uno::Reference<lang::XServiceInfo>*)0) ) || + IsTypeName( sName, + getCppuType((uno::Reference<sheet::XAddIn>*)0) ) ); } - else - ppFuncData = new ScUnoAddInFuncData*[nFuncCount]; - - //! TODO: adjust bucket count? - if ( !pExactHashMap ) - pExactHashMap = new ScAddInHashMap; - if ( !pNameHashMap ) - pNameHashMap = new ScAddInHashMap; - if ( !pLocalHashMap ) - pLocalHashMap = new ScAddInHashMap; - - const uno::Reference<reflection::XIdlMethod>* pArray = aMethods.getConstArray(); - for (long nFuncPos=0; nFuncPos<nNewCount; nFuncPos++) + if (!bSkip) { - ppFuncData[nFuncPos+nOld] = NULL; + uno::Reference<reflection::XIdlClass> xReturn = + xFunc->getReturnType(); + if ( !lcl_ValidReturnType( xReturn ) ) + bSkip = sal_True; + } + if (!bSkip) + { + rtl::OUString aFuncU = xFunc->getName(); + + // stored function name: (service name).(function) + rtl::OUStringBuffer aFuncNameBuffer( aServiceName.getLength()+1+aFuncU.getLength()); + aFuncNameBuffer.append(aServiceName); + aFuncNameBuffer.append('.'); + aFuncNameBuffer.append(aFuncU); + rtl::OUString aFuncName = aFuncNameBuffer.makeStringAndClear(); - uno::Reference<reflection::XIdlMethod> xFunc = pArray[nFuncPos]; - if (xFunc.is()) + sal_Bool bValid = sal_True; + long nVisibleCount = 0; + long nCallerPos = SC_CALLERPOS_NONE; + + uno::Sequence<reflection::ParamInfo> aParams = + xFunc->getParameterInfos(); + long nParamCount = aParams.getLength(); + const reflection::ParamInfo* pParArr = aParams.getConstArray(); + long nParamPos; + for (nParamPos=0; nParamPos<nParamCount; nParamPos++) { - // leave out internal functions - uno::Reference<reflection::XIdlClass> xClass = - xFunc->getDeclaringClass(); - sal_Bool bSkip = sal_True; - if ( xClass.is() ) + if ( pParArr[nParamPos].aMode != reflection::ParamMode_IN ) + bValid = false; + uno::Reference<reflection::XIdlClass> xParClass = + pParArr[nParamPos].aType; + ScAddInArgumentType eArgType = lcl_GetArgType( xParClass ); + if ( eArgType == SC_ADDINARG_NONE ) + bValid = false; + else if ( eArgType == SC_ADDINARG_CALLER ) + nCallerPos = nParamPos; + else + ++nVisibleCount; + } + if (bValid) + { + sal_uInt16 nCategory = lcl_GetCategory( + xAddIn->getProgrammaticCategoryName( aFuncU ) ); + + rtl::OString sHelpId = aHelpIdGenerator.GetHelpId( aFuncU ); + + ::rtl::OUString aLocalName; + try + { + aLocalName = xAddIn-> + getDisplayFunctionName( aFuncU ); + } + catch(uno::Exception&) + { + aLocalName = "###"; + } + + ::rtl::OUString aDescription; + try { - //! XIdlClass needs getType() method! - rtl::OUString sName = xClass->getName(); - bSkip = ( - IsTypeName( sName, - getCppuType((uno::Reference<uno::XInterface>*)0) ) || - IsTypeName( sName, - getCppuType((uno::Reference<lang::XServiceName>*)0) ) || - IsTypeName( sName, - getCppuType((uno::Reference<lang::XServiceInfo>*)0) ) || - IsTypeName( sName, - getCppuType((uno::Reference<sheet::XAddIn>*)0) ) ); + aDescription = xAddIn-> + getFunctionDescription( aFuncU ); } - if (!bSkip) + catch(uno::Exception&) { - uno::Reference<reflection::XIdlClass> xReturn = - xFunc->getReturnType(); - if ( !lcl_ValidReturnType( xReturn ) ) - bSkip = sal_True; + aDescription = "###"; } - if (!bSkip) + + ScAddInArgDesc* pVisibleArgs = NULL; + if ( nVisibleCount > 0 ) { - rtl::OUString aFuncU = xFunc->getName(); - - // stored function name: (service name).(function) - rtl::OUStringBuffer aFuncNameBuffer( aServiceName.getLength()+1+aFuncU.getLength()); - aFuncNameBuffer.append(aServiceName); - aFuncNameBuffer.append('.'); - aFuncNameBuffer.append(aFuncU); - rtl::OUString aFuncName = aFuncNameBuffer.makeStringAndClear(); - - sal_Bool bValid = sal_True; - long nVisibleCount = 0; - long nCallerPos = SC_CALLERPOS_NONE; - - uno::Sequence<reflection::ParamInfo> aParams = - xFunc->getParameterInfos(); - long nParamCount = aParams.getLength(); - const reflection::ParamInfo* pParArr = aParams.getConstArray(); - long nParamPos; + ScAddInArgDesc aDesc; + pVisibleArgs = new ScAddInArgDesc[nVisibleCount]; + long nDestPos = 0; for (nParamPos=0; nParamPos<nParamCount; nParamPos++) { - if ( pParArr[nParamPos].aMode != reflection::ParamMode_IN ) - bValid = false; uno::Reference<reflection::XIdlClass> xParClass = - pParArr[nParamPos].aType; + pParArr[nParamPos].aType; ScAddInArgumentType eArgType = lcl_GetArgType( xParClass ); - if ( eArgType == SC_ADDINARG_NONE ) - bValid = false; - else if ( eArgType == SC_ADDINARG_CALLER ) - nCallerPos = nParamPos; - else - ++nVisibleCount; - } - if (bValid) - { - sal_uInt16 nCategory = lcl_GetCategory( - xAddIn->getProgrammaticCategoryName( aFuncU ) ); - - rtl::OString sHelpId = aHelpIdGenerator.GetHelpId( aFuncU ); - - ::rtl::OUString aLocalName; - try - { - aLocalName = xAddIn-> - getDisplayFunctionName( aFuncU ); - } - catch(uno::Exception&) - { - aLocalName = "###"; - } - - ::rtl::OUString aDescription; - try - { - aDescription = xAddIn-> - getFunctionDescription( aFuncU ); - } - catch(uno::Exception&) - { - aDescription = "###"; - } - - ScAddInArgDesc* pVisibleArgs = NULL; - if ( nVisibleCount > 0 ) + if ( eArgType != SC_ADDINARG_CALLER ) { - ScAddInArgDesc aDesc; - pVisibleArgs = new ScAddInArgDesc[nVisibleCount]; - long nDestPos = 0; - for (nParamPos=0; nParamPos<nParamCount; nParamPos++) + rtl::OUString aArgName; + try { - uno::Reference<reflection::XIdlClass> xParClass = - pParArr[nParamPos].aType; - ScAddInArgumentType eArgType = lcl_GetArgType( xParClass ); - if ( eArgType != SC_ADDINARG_CALLER ) - { - rtl::OUString aArgName; - try - { - aArgName = xAddIn-> - getDisplayArgumentName( aFuncU, nParamPos ); - } - catch(uno::Exception&) - { - aArgName = "###"; - } - rtl::OUString aArgDesc; - try - { - aArgDesc = xAddIn-> - getArgumentDescription( aFuncU, nParamPos ); - } - catch(uno::Exception&) - { - aArgName = "###"; - } - - sal_Bool bOptional = - ( eArgType == SC_ADDINARG_VALUE_OR_ARRAY || - eArgType == SC_ADDINARG_VARARGS ); - - aDesc.eType = eArgType; - aDesc.aName = aArgName; - aDesc.aDescription = aArgDesc; - aDesc.bOptional = bOptional; - //! initialize aInternalName only from config? - aDesc.aInternalName = pParArr[nParamPos].aName; - - pVisibleArgs[nDestPos++] = aDesc; - } + aArgName = xAddIn-> + getDisplayArgumentName( aFuncU, nParamPos ); + } + catch(uno::Exception&) + { + aArgName = "###"; + } + rtl::OUString aArgDesc; + try + { + aArgDesc = xAddIn-> + getArgumentDescription( aFuncU, nParamPos ); + } + catch(uno::Exception&) + { + aArgName = "###"; } - OSL_ENSURE( nDestPos==nVisibleCount, "wrong count" ); - } - ppFuncData[nFuncPos+nOld] = new ScUnoAddInFuncData( - aFuncName, aLocalName, aDescription, - nCategory, sHelpId, - xFunc, aObject, - nVisibleCount, pVisibleArgs, nCallerPos ); - - const ScUnoAddInFuncData* pData = - ppFuncData[nFuncPos+nOld]; - pExactHashMap->insert( - ScAddInHashMap::value_type( - pData->GetOriginalName(), - pData ) ); - pNameHashMap->insert( - ScAddInHashMap::value_type( - pData->GetUpperName(), - pData ) ); - pLocalHashMap->insert( - ScAddInHashMap::value_type( - pData->GetUpperLocal(), - pData ) ); - - delete[] pVisibleArgs; + sal_Bool bOptional = + ( eArgType == SC_ADDINARG_VALUE_OR_ARRAY || + eArgType == SC_ADDINARG_VARARGS ); + + aDesc.eType = eArgType; + aDesc.aName = aArgName; + aDesc.aDescription = aArgDesc; + aDesc.bOptional = bOptional; + //! initialize aInternalName only from config? + aDesc.aInternalName = pParArr[nParamPos].aName; + + pVisibleArgs[nDestPos++] = aDesc; + } } + OSL_ENSURE( nDestPos==nVisibleCount, "wrong count" ); } + + ppFuncData[nFuncPos+nOld] = new ScUnoAddInFuncData( + aFuncName, aLocalName, aDescription, + nCategory, sHelpId, + xFunc, aObject, + nVisibleCount, pVisibleArgs, nCallerPos ); + + const ScUnoAddInFuncData* pData = + ppFuncData[nFuncPos+nOld]; + pExactHashMap->insert( + ScAddInHashMap::value_type( + pData->GetOriginalName(), + pData ) ); + pNameHashMap->insert( + ScAddInHashMap::value_type( + pData->GetUpperName(), + pData ) ); + pLocalHashMap->insert( + ScAddInHashMap::value_type( + pData->GetUpperLocal(), + pData ) ); + + delete[] pVisibleArgs; } } } @@ -1066,119 +1059,112 @@ void ScUnoAddInCollection::UpdateFromAddIn( const uno::Reference<uno::XInterface // only get the function information from Introspection - uno::Reference<lang::XMultiServiceFactory> xManager = comphelper::getProcessServiceFactory(); - if ( xManager.is() ) + uno::Reference<uno::XComponentContext> xContext = comphelper::getProcessComponentContext(); + + uno::Reference<beans::XIntrospection> xIntro = beans::Introspection::create(xContext); + uno::Any aObject; + aObject <<= xInterface; + uno::Reference<beans::XIntrospectionAccess> xAcc = xIntro->inspect(aObject); + if (xAcc.is()) { - uno::Reference<beans::XIntrospection> xIntro( - xManager->createInstance(rtl::OUString("com.sun.star.beans.Introspection")), - uno::UNO_QUERY ); - if ( xIntro.is() ) + uno::Sequence< uno::Reference<reflection::XIdlMethod> > aMethods = + xAcc->getMethods( beans::MethodConcept::ALL ); + long nMethodCount = aMethods.getLength(); + const uno::Reference<reflection::XIdlMethod>* pArray = aMethods.getConstArray(); + for (long nFuncPos=0; nFuncPos<nMethodCount; nFuncPos++) { - uno::Any aObject; - aObject <<= xInterface; - uno::Reference<beans::XIntrospectionAccess> xAcc = xIntro->inspect(aObject); - if (xAcc.is()) + uno::Reference<reflection::XIdlMethod> xFunc = pArray[nFuncPos]; + if (xFunc.is()) { - uno::Sequence< uno::Reference<reflection::XIdlMethod> > aMethods = - xAcc->getMethods( beans::MethodConcept::ALL ); - long nMethodCount = aMethods.getLength(); - const uno::Reference<reflection::XIdlMethod>* pArray = aMethods.getConstArray(); - for (long nFuncPos=0; nFuncPos<nMethodCount; nFuncPos++) + rtl::OUString aFuncU = xFunc->getName(); + + // stored function name: (service name).(function) + rtl::OUStringBuffer aFuncNameBuffer( rServiceName.getLength()+1+aFuncU.getLength()); + aFuncNameBuffer.append(rServiceName); + aFuncNameBuffer.append('.'); + aFuncNameBuffer.append(aFuncU); + rtl::OUString aFuncName = aFuncNameBuffer.makeStringAndClear(); + + // internal names are skipped because no FuncData exists + ScUnoAddInFuncData* pOldData = const_cast<ScUnoAddInFuncData*>( GetFuncData( aFuncName ) ); + if ( pOldData ) { - uno::Reference<reflection::XIdlMethod> xFunc = pArray[nFuncPos]; - if (xFunc.is()) + // Create new (complete) argument info. + // As in ReadFromAddIn, the reflection information is authoritative. + // Local names and descriptions from pOldData are looked up using the + // internal argument name. + + sal_Bool bValid = sal_True; + long nVisibleCount = 0; + long nCallerPos = SC_CALLERPOS_NONE; + + uno::Sequence<reflection::ParamInfo> aParams = + xFunc->getParameterInfos(); + long nParamCount = aParams.getLength(); + const reflection::ParamInfo* pParArr = aParams.getConstArray(); + long nParamPos; + for (nParamPos=0; nParamPos<nParamCount; nParamPos++) { - rtl::OUString aFuncU = xFunc->getName(); - - // stored function name: (service name).(function) - rtl::OUStringBuffer aFuncNameBuffer( rServiceName.getLength()+1+aFuncU.getLength()); - aFuncNameBuffer.append(rServiceName); - aFuncNameBuffer.append('.'); - aFuncNameBuffer.append(aFuncU); - rtl::OUString aFuncName = aFuncNameBuffer.makeStringAndClear(); - - // internal names are skipped because no FuncData exists - ScUnoAddInFuncData* pOldData = const_cast<ScUnoAddInFuncData*>( GetFuncData( aFuncName ) ); - if ( pOldData ) + if ( pParArr[nParamPos].aMode != reflection::ParamMode_IN ) + bValid = false; + uno::Reference<reflection::XIdlClass> xParClass = + pParArr[nParamPos].aType; + ScAddInArgumentType eArgType = lcl_GetArgType( xParClass ); + if ( eArgType == SC_ADDINARG_NONE ) + bValid = false; + else if ( eArgType == SC_ADDINARG_CALLER ) + nCallerPos = nParamPos; + else + ++nVisibleCount; + } + if (bValid) + { + ScAddInArgDesc* pVisibleArgs = NULL; + if ( nVisibleCount > 0 ) { - // Create new (complete) argument info. - // As in ReadFromAddIn, the reflection information is authoritative. - // Local names and descriptions from pOldData are looked up using the - // internal argument name. - - sal_Bool bValid = sal_True; - long nVisibleCount = 0; - long nCallerPos = SC_CALLERPOS_NONE; - - uno::Sequence<reflection::ParamInfo> aParams = - xFunc->getParameterInfos(); - long nParamCount = aParams.getLength(); - const reflection::ParamInfo* pParArr = aParams.getConstArray(); - long nParamPos; + ScAddInArgDesc aDesc; + pVisibleArgs = new ScAddInArgDesc[nVisibleCount]; + long nDestPos = 0; for (nParamPos=0; nParamPos<nParamCount; nParamPos++) { - if ( pParArr[nParamPos].aMode != reflection::ParamMode_IN ) - bValid = false; uno::Reference<reflection::XIdlClass> xParClass = - pParArr[nParamPos].aType; + pParArr[nParamPos].aType; ScAddInArgumentType eArgType = lcl_GetArgType( xParClass ); - if ( eArgType == SC_ADDINARG_NONE ) - bValid = false; - else if ( eArgType == SC_ADDINARG_CALLER ) - nCallerPos = nParamPos; - else - ++nVisibleCount; - } - if (bValid) - { - ScAddInArgDesc* pVisibleArgs = NULL; - if ( nVisibleCount > 0 ) + if ( eArgType != SC_ADDINARG_CALLER ) { - ScAddInArgDesc aDesc; - pVisibleArgs = new ScAddInArgDesc[nVisibleCount]; - long nDestPos = 0; - for (nParamPos=0; nParamPos<nParamCount; nParamPos++) + const ScAddInArgDesc* pOldArgDesc = + lcl_FindArgDesc( *pOldData, pParArr[nParamPos].aName ); + if ( pOldArgDesc ) { - uno::Reference<reflection::XIdlClass> xParClass = - pParArr[nParamPos].aType; - ScAddInArgumentType eArgType = lcl_GetArgType( xParClass ); - if ( eArgType != SC_ADDINARG_CALLER ) - { - const ScAddInArgDesc* pOldArgDesc = - lcl_FindArgDesc( *pOldData, pParArr[nParamPos].aName ); - if ( pOldArgDesc ) - { - aDesc.aName = pOldArgDesc->aName; - aDesc.aDescription = pOldArgDesc->aDescription; - } - else - aDesc.aName = aDesc.aDescription = "###"; + aDesc.aName = pOldArgDesc->aName; + aDesc.aDescription = pOldArgDesc->aDescription; + } + else + aDesc.aName = aDesc.aDescription = "###"; - sal_Bool bOptional = - ( eArgType == SC_ADDINARG_VALUE_OR_ARRAY || - eArgType == SC_ADDINARG_VARARGS ); + sal_Bool bOptional = + ( eArgType == SC_ADDINARG_VALUE_OR_ARRAY || + eArgType == SC_ADDINARG_VARARGS ); - aDesc.eType = eArgType; - aDesc.bOptional = bOptional; - //! initialize aInternalName only from config? - aDesc.aInternalName = pParArr[nParamPos].aName; + aDesc.eType = eArgType; + aDesc.bOptional = bOptional; + //! initialize aInternalName only from config? + aDesc.aInternalName = pParArr[nParamPos].aName; - pVisibleArgs[nDestPos++] = aDesc; - } - } - OSL_ENSURE( nDestPos==nVisibleCount, "wrong count" ); + pVisibleArgs[nDestPos++] = aDesc; } + } + OSL_ENSURE( nDestPos==nVisibleCount, "wrong count" ); + } - pOldData->SetFunction( xFunc, aObject ); - pOldData->SetArguments( nVisibleCount, pVisibleArgs ); - pOldData->SetCallerPos( nCallerPos ); + pOldData->SetFunction( xFunc, aObject ); + pOldData->SetArguments( nVisibleCount, pVisibleArgs ); + pOldData->SetCallerPos( nCallerPos ); - if ( pFunctionList ) - lcl_UpdateFunctionList( *pFunctionList, *pOldData ); + if ( pFunctionList ) + lcl_UpdateFunctionList( *pFunctionList, *pOldData ); - delete[] pVisibleArgs; - } - } + delete[] pVisibleArgs; } } } diff --git a/sc/source/ui/vba/vbahelper.cxx b/sc/source/ui/vba/vbahelper.cxx index ce5e680f1c26..947e6a8491f9 100644 --- a/sc/source/ui/vba/vbahelper.cxx +++ b/sc/source/ui/vba/vbahelper.cxx @@ -36,7 +36,7 @@ #include <com/sun/star/uno/XComponentContext.hpp> #include <com/sun/star/lang/XMultiComponentFactory.hpp> #include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/XIntrospection.hpp> +#include <com/sun/star/beans/Introspection.hpp> #include <comphelper/processfactory.hxx> @@ -82,8 +82,8 @@ getIntrospectionAccess( const uno::Any& aObject ) throw (uno::RuntimeException) static uno::Reference< beans::XIntrospection > xIntrospection; if( !xIntrospection.is() ) { - uno::Reference< lang::XMultiServiceFactory > xFactory( comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW ); - xIntrospection.set( xFactory->createInstance( rtl::OUString( "com.sun.star.beans.Introspection" ) ), uno::UNO_QUERY_THROW ); + uno::Reference< uno::XComponentContext > xContext( comphelper::getProcessComponentContext() ); + xIntrospection.set( beans::Introspection::create(xContext) ); } return xIntrospection->inspect( aObject ); } |