Kaydet (Commit) 900d60b3 authored tarafından Noel Grandin's avatar Noel Grandin Kaydeden (comit) Stephan Bergmann

fdo#46808, Adapt bridge::BridgeFactory UNO service to new style

Create a merged XBridgeFactory2 interface for this service to implement.
Which is backwards-compatible, but does not require creating a new service.

Change-Id: I7309f4d30f0e772bc203c701eb3407b920ffafcc
üst e3c05e34
...@@ -41,6 +41,8 @@ ...@@ -41,6 +41,8 @@
#include <comphelper/processfactory.hxx> #include <comphelper/processfactory.hxx>
#include <comphelper/string.hxx> #include <comphelper/string.hxx>
#include <com/sun/star/bridge/BridgeFactory.hpp>
#include <com/sun/star/bridge/XBridge.hpp>
#include <com/sun/star/uno/Sequence.hxx> #include <com/sun/star/uno/Sequence.hxx>
#include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ucb/SimpleFileAccess.hpp> #include <com/sun/star/ucb/SimpleFileAccess.hpp>
...@@ -52,8 +54,6 @@ ...@@ -52,8 +54,6 @@
#include <com/sun/star/io/XOutputStream.hpp> #include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/io/XStream.hpp> #include <com/sun/star/io/XStream.hpp>
#include <com/sun/star/io/XSeekable.hpp> #include <com/sun/star/io/XSeekable.hpp>
#include <com/sun/star/bridge/XBridge.hpp>
#include <com/sun/star/bridge/XBridgeFactory.hpp>
using namespace comphelper; using namespace comphelper;
using namespace com::sun::star::uno; using namespace com::sun::star::uno;
...@@ -214,19 +214,11 @@ bool needSecurityRestrictions( void ) ...@@ -214,19 +214,11 @@ bool needSecurityRestrictions( void )
return true; return true;
} }
Reference< XMultiServiceFactory > xSMgr = getProcessServiceFactory(); Reference< XComponentContext > xContext = getProcessComponentContext();
if( !xSMgr.is() ) Reference< XBridgeFactory2 > xBridgeFac( BridgeFactory::create(xContext) );
return true;
Reference< XBridgeFactory > xBridgeFac( xSMgr->createInstance
( ::rtl::OUString("com.sun.star.bridge.BridgeFactory" ) ), UNO_QUERY );
Sequence< Reference< XBridge > > aBridgeSeq; Sequence< Reference< XBridge > > aBridgeSeq = xBridgeFac->getExistingBridges();
sal_Int32 nBridgeCount = 0; sal_Int32 nBridgeCount = aBridgeSeq.getLength();
if( xBridgeFac.is() )
{
aBridgeSeq = xBridgeFac->getExistingBridges();
nBridgeCount = aBridgeSeq.getLength();
}
if( nBridgeCount == 0 ) if( nBridgeCount == 0 )
{ {
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#include <map> #include <map>
#include "boost/noncopyable.hpp" #include "boost/noncopyable.hpp"
#include "com/sun/star/bridge/XBridgeFactory.hpp" #include "com/sun/star/bridge/XBridgeFactory2.hpp"
#include "com/sun/star/lang/XServiceInfo.hpp" #include "com/sun/star/lang/XServiceInfo.hpp"
#include "com/sun/star/uno/Exception.hpp" #include "com/sun/star/uno/Exception.hpp"
#include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/Reference.hxx"
...@@ -50,7 +50,7 @@ namespace binaryurp { ...@@ -50,7 +50,7 @@ namespace binaryurp {
typedef typedef
cppu::WeakComponentImplHelper2< cppu::WeakComponentImplHelper2<
com::sun::star::lang::XServiceInfo, com::sun::star::lang::XServiceInfo,
com::sun::star::bridge::XBridgeFactory > com::sun::star::bridge::XBridgeFactory2 >
BridgeFactoryBase; BridgeFactoryBase;
class BridgeFactory: class BridgeFactory:
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <tools/stream.hxx> #include <tools/stream.hxx>
#include <vcl/svapp.hxx> #include <vcl/svapp.hxx>
#include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/bridge/BridgeFactory.hpp>
#include <com/sun/star/uno/XNamingService.hpp> #include <com/sun/star/uno/XNamingService.hpp>
#include <cppuhelper/factory.hxx> #include <cppuhelper/factory.hxx>
...@@ -44,12 +45,11 @@ extern "C" void workerfunc (void * acc) ...@@ -44,12 +45,11 @@ extern "C" void workerfunc (void * acc)
((Acceptor*)acc)->run(); ((Acceptor*)acc)->run();
} }
static Reference<XInterface> getComponentContext( const Reference<XMultiServiceFactory>& rFactory) static Reference<XComponentContext> getComponentContext( const Reference<XMultiServiceFactory>& rFactory)
{ {
Reference<XInterface> rContext; Reference<XComponentContext> rContext;
Reference< XPropertySet > rPropSet( rFactory, UNO_QUERY ); Reference< XPropertySet > rPropSet( rFactory, UNO_QUERY );
Any a = rPropSet->getPropertyValue( Any a = rPropSet->getPropertyValue( ::rtl::OUString( "DefaultContext" ) );
::rtl::OUString( "DefaultContext" ) );
a >>= rContext; a >>= rContext;
return rContext; return rContext;
} }
...@@ -65,14 +65,12 @@ Acceptor::Acceptor( const Reference< XMultiServiceFactory >& rFactory ) ...@@ -65,14 +65,12 @@ Acceptor::Acceptor( const Reference< XMultiServiceFactory >& rFactory )
, m_bDying(false) , m_bDying(false)
{ {
m_rSMgr = rFactory; m_rSMgr = rFactory;
// get component context
m_rContext = getComponentContext(m_rSMgr);
m_rAcceptor = Reference< XAcceptor > (m_rSMgr->createInstance( m_rAcceptor = Reference< XAcceptor > (m_rSMgr->createInstance(
rtl::OUString("com.sun.star.connection.Acceptor" )), rtl::OUString("com.sun.star.connection.Acceptor" )),
UNO_QUERY ); UNO_QUERY );
m_rBridgeFactory = Reference < XBridgeFactory > (m_rSMgr->createInstance( m_rBridgeFactory = BridgeFactory::create(m_rContext);
rtl::OUString("com.sun.star.bridge.BridgeFactory" )),
UNO_QUERY );
// get component context
m_rContext = getComponentContext(m_rSMgr);
} }
...@@ -108,7 +106,7 @@ Acceptor::~Acceptor() ...@@ -108,7 +106,7 @@ Acceptor::~Acceptor()
void SAL_CALL Acceptor::run() void SAL_CALL Acceptor::run()
{ {
while ( m_rAcceptor.is() && m_rBridgeFactory.is() ) while ( m_rAcceptor.is() )
{ {
RTL_LOGFILE_CONTEXT( aLog, "desktop (lo119109) Acceptor::run" ); RTL_LOGFILE_CONTEXT( aLog, "desktop (lo119109) Acceptor::run" );
try try
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include <com/sun/star/connection/XAcceptor.hpp> #include <com/sun/star/connection/XAcceptor.hpp>
#include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/bridge/XInstanceProvider.hpp> #include <com/sun/star/bridge/XInstanceProvider.hpp>
#include <com/sun/star/bridge/XBridgeFactory.hpp> #include <com/sun/star/bridge/XBridgeFactory2.hpp>
#include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertySet.hpp>
#include <cppuhelper/implbase1.hxx> #include <cppuhelper/implbase1.hxx>
#include <cppuhelper/implbase2.hxx> #include <cppuhelper/implbase2.hxx>
...@@ -66,9 +66,9 @@ private: ...@@ -66,9 +66,9 @@ private:
Condition m_cEnable; Condition m_cEnable;
Reference< XMultiServiceFactory > m_rSMgr; Reference< XMultiServiceFactory > m_rSMgr;
Reference< XInterface > m_rContext; Reference< XComponentContext > m_rContext;
Reference< XAcceptor > m_rAcceptor; Reference< XAcceptor > m_rAcceptor;
Reference< XBridgeFactory > m_rBridgeFactory; Reference< XBridgeFactory2 > m_rBridgeFactory;
OUString m_aAcceptString; OUString m_aAcceptString;
OUString m_aConnectString; OUString m_aConnectString;
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
#include "com/sun/star/lang/DisposedException.hpp" #include "com/sun/star/lang/DisposedException.hpp"
#include "boost/scoped_array.hpp" #include "boost/scoped_array.hpp"
#include "com/sun/star/ui/dialogs/XDialogClosedListener.hpp" #include "com/sun/star/ui/dialogs/XDialogClosedListener.hpp"
#include "com/sun/star/bridge/BridgeFactory.hpp"
#include "com/sun/star/bridge/XBridgeFactory.hpp" #include "com/sun/star/bridge/XBridgeFactory.hpp"
#include <stdio.h> #include <stdio.h>
#include <vector> #include <vector>
...@@ -197,25 +198,19 @@ void disposeBridges(Reference<css::uno::XComponentContext> ctx) ...@@ -197,25 +198,19 @@ void disposeBridges(Reference<css::uno::XComponentContext> ctx)
if (!ctx.is()) if (!ctx.is())
return; return;
Reference<css::bridge::XBridgeFactory> bridgeFac( Reference<css::bridge::XBridgeFactory2> bridgeFac( css::bridge::BridgeFactory::create(ctx) );
ctx->getServiceManager()->createInstanceWithContext(
OUSTR("com.sun.star.bridge.BridgeFactory"), ctx),
UNO_QUERY);
if (bridgeFac.is()) const Sequence< Reference<css::bridge::XBridge> >seqBridges = bridgeFac->getExistingBridges();
for (sal_Int32 i = 0; i < seqBridges.getLength(); i++)
{ {
const Sequence< Reference<css::bridge::XBridge> >seqBridges = bridgeFac->getExistingBridges(); Reference<css::lang::XComponent> comp(seqBridges[i], UNO_QUERY);
for (sal_Int32 i = 0; i < seqBridges.getLength(); i++) if (comp.is())
{ {
Reference<css::lang::XComponent> comp(seqBridges[i], UNO_QUERY); try {
if (comp.is()) comp->dispose();
}
catch ( const css::lang::DisposedException& )
{ {
try {
comp->dispose();
}
catch ( const css::lang::DisposedException& )
{
}
} }
} }
} }
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/registry/XRegistryKey.hpp> #include <com/sun/star/registry/XRegistryKey.hpp>
#include <com/sun/star/connection/XConnector.hpp> #include <com/sun/star/connection/XConnector.hpp>
#include <com/sun/star/bridge/BridgeFactory.hpp>
#include <com/sun/star/bridge/XBridgeFactory.hpp> #include <com/sun/star/bridge/XBridgeFactory.hpp>
#include <com/sun/star/bridge/XUnoUrlResolver.hpp> #include <com/sun/star/bridge/XUnoUrlResolver.hpp>
...@@ -158,14 +159,7 @@ Reference< XInterface > ResolverImpl::resolve( const OUString & rUnoUrl ) ...@@ -158,14 +159,7 @@ Reference< XInterface > ResolverImpl::resolve( const OUString & rUnoUrl )
Reference< XConnection > xConnection( xConnector->connect( aConnectDescr ) ); Reference< XConnection > xConnection( xConnector->connect( aConnectDescr ) );
// As soon as singletons are ready, switch to singleton ! // As soon as singletons are ready, switch to singleton !
Reference< XBridgeFactory > xBridgeFactory( Reference< XBridgeFactory2 > xBridgeFactory( BridgeFactory::create(_xCtx) );
_xSMgr->createInstanceWithContext(
OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.BridgeFactory") ),
_xCtx ),
UNO_QUERY );
if (! xBridgeFactory.is())
throw RuntimeException( OUString( RTL_CONSTASCII_USTRINGPARAM("no bridge factory!" ) ), Reference< XInterface >() );
// bridge // bridge
Reference< XBridge > xBridge( xBridgeFactory->createBridge( Reference< XBridge > xBridge( xBridgeFactory->createBridge(
......
...@@ -44,7 +44,6 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,udkapi,udkapi/com/sun/star/beans,\ ...@@ -44,7 +44,6 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,udkapi,udkapi/com/sun/star/beans,\
)) ))
$(eval $(call gb_UnoApi_add_idlfiles_noheader,udkapi,udkapi/com/sun/star/bridge,\ $(eval $(call gb_UnoApi_add_idlfiles_noheader,udkapi,udkapi/com/sun/star/bridge,\
Bridge \ Bridge \
BridgeFactory \
IiopBridge \ IiopBridge \
OleApplicationRegistration \ OleApplicationRegistration \
OleBridgeSupplier \ OleBridgeSupplier \
...@@ -229,11 +228,13 @@ $(eval $(call gb_UnoApi_add_idlfiles,udkapi,udkapi/com/sun/star/beans,\ ...@@ -229,11 +228,13 @@ $(eval $(call gb_UnoApi_add_idlfiles,udkapi,udkapi/com/sun/star/beans,\
)) ))
$(eval $(call gb_UnoApi_add_idlfiles,udkapi,udkapi/com/sun/star/bridge,\ $(eval $(call gb_UnoApi_add_idlfiles,udkapi,udkapi/com/sun/star/bridge,\
BridgeExistsException \ BridgeExistsException \
BridgeFactory \
InvalidProtocolChangeException \ InvalidProtocolChangeException \
ModelDependent \ ModelDependent \
ProtocolProperty \ ProtocolProperty \
XBridge \ XBridge \
XBridgeFactory \ XBridgeFactory \
XBridgeFactory2 \
XBridgeSupplier \ XBridgeSupplier \
XBridgeSupplier2 \ XBridgeSupplier2 \
XInstanceProvider \ XInstanceProvider \
......
...@@ -19,11 +19,10 @@ ...@@ -19,11 +19,10 @@
#ifndef __com_sun_star_bridge_BridgeFactory_idl__ #ifndef __com_sun_star_bridge_BridgeFactory_idl__
#define __com_sun_star_bridge_BridgeFactory_idl__ #define __com_sun_star_bridge_BridgeFactory_idl__
#include <com/sun/star/lang/XComponent.idl> #include <com/sun/star/bridge/XBridgeFactory2.idl>
#include <com/sun/star/bridge/XBridgeFactory.idl>
module com { module sun { module star { module bridge { module com { module sun { module star { module bridge {
/** allows to create new or access existing interprocess bridges. /** allows to create new or access existing interprocess bridges.
...@@ -34,16 +33,7 @@ ...@@ -34,16 +33,7 @@
@see com::sun::star::bridge::Bridge @see com::sun::star::bridge::Bridge
*/ */
published service BridgeFactory published service BridgeFactory : com::sun::star::bridge::XBridgeFactory2;
{
/** The main interface of the service
*/
interface com::sun::star::bridge::XBridgeFactory;
/** This interface allows to break possible cyclic references.
*/
interface com::sun::star::lang::XComponent;
};
}; }; }; }; }; }; }; };
......
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef __com_sun_star_bridge_XBridgeFactory2_idl__
#define __com_sun_star_bridge_XBridgeFactory2_idl__
#include <com/sun/star/lang/XComponent.idl>
#include <com/sun/star/bridge/XBridgeFactory.idl>
module com { module sun { module star { module bridge {
/**
Provides a unified interface for the BridgeFactory service to implement.
@since LibreOffice 3.7
*/
published interface XBridgeFactory2
{
/** The main interface of the service
*/
interface com::sun::star::bridge::XBridgeFactory;
/** This interface allows to break possible cyclic references.
*/
interface com::sun::star::lang::XComponent;
};
}; }; }; };
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment