LibreOffice Module comphelper (master)
1
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
comphelper
source
processfactory
processfactory.cxx
Go to the documentation of this file.
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
* This file is part of the LibreOffice project.
4
*
5
* This Source Code Form is subject to the terms of the Mozilla Public
6
* License, v. 2.0. If a copy of the MPL was not distributed with this
7
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
*
9
* This file incorporates work covered by the following license notice:
10
*
11
* Licensed to the Apache Software Foundation (ASF) under one or more
12
* contributor license agreements. See the NOTICE file distributed
13
* with this work for additional information regarding copyright
14
* ownership. The ASF licenses this file to you under the Apache
15
* License, Version 2.0 (the "License"); you may not use this file
16
* except in compliance with the License. You may obtain a copy of
17
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
18
*/
19
20
#include <osl/mutex.hxx>
21
#include <
comphelper/processfactory.hxx
>
22
23
#include <com/sun/star/beans/XPropertySet.hpp>
24
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
25
#include <com/sun/star/uno/DeploymentException.hpp>
26
#include <com/sun/star/uno/XComponentContext.hpp>
27
28
namespace
com::sun::star::uno
{
class
XComponentContext; }
29
30
using namespace
::
com::sun::star
;
31
using namespace
com::sun::star::uno
;
32
using namespace
com::sun::star::lang
;
33
using namespace
osl
;
34
35
namespace
comphelper
36
{
37
38
namespace
{
39
40
class
LocalProcessFactory {
41
public
:
42
void
set
(
const
Reference< XMultiServiceFactory >
& xSMgr )
43
{
44
Guard< Mutex > aGuard( Mutex::getGlobalMutex() );
45
46
xProcessFactory
= xSMgr;
47
}
48
49
Reference< XMultiServiceFactory >
get
()
const
50
{
51
Guard< Mutex > aGuard( Mutex::getGlobalMutex() );
52
53
return
xProcessFactory
;
54
}
55
56
private
:
57
Reference< XMultiServiceFactory >
xProcessFactory
;
58
};
59
60
/*
61
This var preserves only that the above xProcessFactory variable will not be create when
62
the library is loaded.
63
*/
64
LocalProcessFactory localProcessFactory;
65
66
}
67
68
void
setProcessServiceFactory
(
const
Reference< XMultiServiceFactory >
& xSMgr)
69
{
70
localProcessFactory.set( xSMgr );
71
}
72
73
Reference< XMultiServiceFactory >
getProcessServiceFactory
()
74
{
75
Reference< XMultiServiceFactory>
xReturn = localProcessFactory.get();
76
if
( !xReturn.is() )
77
{
78
throw
DeploymentException(
"null process service factory"
);
79
}
80
return
xReturn;
81
}
82
83
Reference< XComponentContext >
getComponentContext
(
84
Reference< XMultiServiceFactory >
const
& factory)
85
{
86
Reference< XComponentContext >
xRet;
87
uno::Reference<beans::XPropertySet>
const
xProps( factory, uno::UNO_QUERY );
88
if
(xProps.is()) {
89
try
{
90
xRet.set( xProps->getPropertyValue(
"DefaultContext"
),
91
uno::UNO_QUERY );
92
}
93
catch
(beans::UnknownPropertyException & e) {
94
throw
DeploymentException(
95
"unknown service factory DefaultContext property: "
+ e.Message,
96
Reference<XInterface>
(factory, UNO_QUERY) );
97
}
98
}
99
if
( !xRet.is() )
100
{
101
throw
DeploymentException(
102
"no service factory DefaultContext"
,
103
Reference<XInterface>
(factory, UNO_QUERY) );
104
}
105
return
xRet;
106
}
107
108
Reference< XComponentContext >
getProcessComponentContext
()
109
{
110
return
getComponentContext
(
getProcessServiceFactory
() );
111
}
112
113
}
// namespace comphelper
114
115
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
com::sun::star::uno::Reference
Definition:
accessibleeventnotifier.hxx:26
com::sun::star
com::sun::star::lang
osl
processfactory.hxx
xProcessFactory
Reference< XMultiServiceFactory > xProcessFactory
Definition:
processfactory.cxx:57
com::sun::star::uno
comphelper::setProcessServiceFactory
void setProcessServiceFactory(const Reference< XMultiServiceFactory > &xSMgr)
Definition:
processfactory.cxx:68
comphelper
comphelper::getProcessServiceFactory
Reference< XMultiServiceFactory > getProcessServiceFactory()
This function gets the process service factory.
Definition:
processfactory.cxx:73
getComponentContext
def getComponentContext()
comphelper::getProcessComponentContext
Reference< XComponentContext > getProcessComponentContext()
This function gets the process service factory's default component context.
Definition:
processfactory.cxx:108
set
void set(css::uno::UnoInterfaceReference const &value)
Generated on Thu Jan 14 2021 06:16:44 for LibreOffice Module comphelper (master) by
1.8.10