summaryrefslogtreecommitdiff
path: root/stoc/source/invocation/invocation.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'stoc/source/invocation/invocation.cxx')
-rw-r--r--stoc/source/invocation/invocation.cxx50
1 files changed, 27 insertions, 23 deletions
diff --git a/stoc/source/invocation/invocation.cxx b/stoc/source/invocation/invocation.cxx
index e3eea84fd50f..7671471682b2 100644
--- a/stoc/source/invocation/invocation.cxx
+++ b/stoc/source/invocation/invocation.cxx
@@ -227,7 +227,7 @@ private:
Reference<XElementAccess> _xElementAccess;
- Reference<XExactName> _xENDirect, _xENIntrospection, _xENNameAccess;
+ Reference<XExactName> _xENDirect, _xENIntrospection;
};
@@ -275,7 +275,7 @@ Any SAL_CALL Invocation_Impl::queryInterface( const Type & aType )
// Ivocation does not support XExactName, if direct object supports
// XInvocation, but not XExactName.
if ((_xDirect.is() && _xENDirect.is()) ||
- (!_xDirect.is() && (_xENIntrospection.is() || _xENNameAccess.is())))
+ (!_xDirect.is() && _xENIntrospection.is()))
{
return makeAny( Reference< XExactName >( (static_cast< XExactName* >(this)) ) );
}
@@ -389,38 +389,44 @@ void Invocation_Impl::setMaterial( const Any& rMaterial )
_xIntrospectionAccess = xIntrospection->inspect( _aMaterial );
if( _xIntrospectionAccess.is() )
{
-
_xElementAccess = Reference<XElementAccess>::query(
_xIntrospectionAccess->queryAdapter(
cppu::UnoType<XElementAccess>::get()) );
- _xEnumerationAccess = Reference<XEnumerationAccess>::query(
- _xIntrospectionAccess->queryAdapter(
- cppu::UnoType<XEnumerationAccess>::get()) );
+ if( _xElementAccess.is() )
+ {
+ _xEnumerationAccess = Reference<XEnumerationAccess>::query(
+ _xIntrospectionAccess->queryAdapter(
+ cppu::UnoType<XEnumerationAccess>::get()) );
- _xIndexAccess = Reference<XIndexAccess>::query(
- _xIntrospectionAccess->queryAdapter(
- cppu::UnoType<XIndexAccess>::get()) );
+ _xIndexAccess = Reference<XIndexAccess>::query(
+ _xIntrospectionAccess->queryAdapter(
+ cppu::UnoType<XIndexAccess>::get()) );
- _xIndexContainer = Reference<XIndexContainer>::query(
- _xIntrospectionAccess->queryAdapter(
- cppu::UnoType<XIndexContainer>::get()) );
+ if( _xIndexAccess.is() )
+ {
+ _xIndexContainer = Reference<XIndexContainer>::query(
+ _xIntrospectionAccess->queryAdapter(
+ cppu::UnoType<XIndexContainer>::get()) );
+ }
- _xNameAccess = Reference<XNameAccess>::query(
- _xIntrospectionAccess->queryAdapter(
- cppu::UnoType<XNameAccess>::get()) );
+ _xNameAccess = Reference<XNameAccess>::query(
+ _xIntrospectionAccess->queryAdapter(
+ cppu::UnoType<XNameAccess>::get()) );
- _xNameContainer = Reference<XNameContainer>::query(
- _xIntrospectionAccess->queryAdapter(
- cppu::UnoType<XNameContainer>::get()) );
+ if( _xNameAccess.is() )
+ {
+ _xNameContainer = Reference<XNameContainer>::query(
+ _xIntrospectionAccess->queryAdapter(
+ cppu::UnoType<XNameContainer>::get()) );
+ }
+ }
_xPropertySet = Reference<XPropertySet>::query(
_xIntrospectionAccess->queryAdapter(
cppu::UnoType<XPropertySet>::get()) );
_xENIntrospection = Reference<XExactName>::query( _xIntrospectionAccess );
- if (_xNameAccess.is())
- _xENNameAccess = Reference<XExactName>::query( _xNameAccess );
}
}
/* only once !!!
@@ -450,8 +456,6 @@ OUString Invocation_Impl::getExactName( const OUString& rApproximateName )
OUString aRet;
if (_xENIntrospection.is())
aRet = _xENIntrospection->getExactName( rApproximateName );
- if (aRet.isEmpty() && _xENNameAccess.is())
- aRet = _xENNameAccess->getExactName( rApproximateName );
return aRet;
}
@@ -990,7 +994,7 @@ Sequence< Type > SAL_CALL Invocation_Impl::getTypes() throw( RuntimeException, s
// Invocation does not support XExactName if direct object supports
// XInvocation, but not XExactName.
if ((_xDirect.is() && _xENDirect.is()) ||
- (!_xDirect.is() && (_xENIntrospection.is() || _xENNameAccess.is())))
+ (!_xDirect.is() && _xENIntrospection.is()))
{
pTypes[ n++ ] = cppu::UnoType<XExactName>::get();
}