2002-09-20 13:37:46 +00:00
/*************************************************************************
*
* $ RCSfile : ScriptRuntimeManager . cxx , v $
*
2003-05-23 13:59:52 +00:00
* $ Revision : 1.17 $
2002-09-20 13:37:46 +00:00
*
2003-05-23 13:59:52 +00:00
* last change : $ Author : dfoster $ $ Date : 2003 - 05 - 23 14 : 59 : 51 $
2002-09-20 13:37:46 +00:00
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc . , October , 2000
*
* GNU Lesser General Public License Version 2.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Copyright 2000 by Sun Microsystems , Inc .
* 901 San Antonio Road , Palo Alto , CA 94303 , USA
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 , as published by the Free Software Foundation .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston ,
* MA 02111 - 1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 ( 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.openoffice.org/license.html.
*
* Software provided under this License is provided on an " AS IS " basis ,
* WITHOUT WARRANTY OF ANY KIND , EITHER EXPRESSED OR IMPLIED , INCLUDING ,
* WITHOUT LIMITATION , WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS ,
* MERCHANTABLE , FIT FOR A PARTICULAR PURPOSE , OR NON - INFRINGING .
* See the License for the specific provisions governing your rights and
* obligations concerning the Software .
*
* The Initial Developer of the Original Code is : Sun Microsystems , Inc .
*
* Copyright : 2000 by Sun Microsystems , Inc .
*
* All Rights Reserved .
*
* Contributor ( s ) : _______________________________________
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2002-10-29 15:52:34 +00:00
# ifndef _VCL_MSGBOX_HXX
# include <vcl/msgbox.hxx>
# endif
# include "ScriptExecDialog.hrc"
2002-10-30 13:26:24 +00:00
# include <util/scriptingconstants.hxx>
2002-09-20 13:37:46 +00:00
# include <cppuhelper/implementationentry.hxx>
2002-10-23 13:13:25 +00:00
# include <com/sun/star/beans/XPropertySet.hpp>
2003-05-16 09:14:24 +00:00
# include <com/sun/star/lang/XEventListener.hpp>
2003-05-21 08:04:36 +00:00
# include <com/sun/star/lang/EventObject.hpp>
2002-10-23 13:13:25 +00:00
2002-09-20 13:37:46 +00:00
# include "ScriptNameResolverImpl.hxx"
2002-09-27 11:16:30 +00:00
# include "ScriptRuntimeManager.hxx"
2002-09-20 13:37:46 +00:00
# include <util/util.hxx>
2002-10-23 13:13:25 +00:00
# include <util/scriptingconstants.hxx>
2002-09-20 13:37:46 +00:00
using namespace : : rtl ;
using namespace : : osl ;
using namespace : : com : : sun : : star ;
using namespace : : com : : sun : : star : : uno ;
using namespace : : drafts : : com : : sun : : star : : script : : framework ;
namespace scripting_runtimemgr
{
2002-09-27 11:16:30 +00:00
static OUString s_implName = : : rtl : : OUString : : createFromAscii (
2003-03-03 17:39:42 +00:00
" drafts.com.sun.star.script.framework.runtime.ScriptRuntimeManager " ) ;
2002-09-27 11:16:30 +00:00
static OUString s_serviceName = : : rtl : : OUString : : createFromAscii (
2003-03-03 17:39:42 +00:00
" drafts.com.sun.star.script.framework.runtime.ScriptRuntimeManager " ) ;
2002-09-20 13:37:46 +00:00
static Sequence < OUString > s_serviceNames = Sequence < OUString > ( & s_serviceName , 1 ) ;
: : rtl_StandardModuleCount s_moduleCount = MODULE_COUNT_INIT ;
//*************************************************************************
// ScriptRuntimeManager Constructor
2002-09-27 11:16:30 +00:00
ScriptRuntimeManager : : ScriptRuntimeManager (
const Reference < XComponentContext > & xContext ) :
m_xContext ( xContext )
2002-09-20 13:37:46 +00:00
{
OSL_TRACE ( " < ScriptRuntimeManager ctor called > \n " ) ;
2002-11-06 15:26:40 +00:00
validateXRef ( m_xContext ,
" ScriptRuntimeManager::ScriptRuntimeManager: invalid context " ) ;
m_xMgr = m_xContext - > getServiceManager ( ) ;
validateXRef ( m_xMgr ,
" ScriptRuntimeManager::ScriptRuntimeManager: cannot get ServiceManager " ) ;
2002-09-20 13:37:46 +00:00
s_moduleCount . modCnt . acquire ( & s_moduleCount . modCnt ) ;
2003-01-27 16:18:27 +00:00
// test
//scripting_securitymgr::ScriptSecurityManager ssm(xContext);
2002-09-20 13:37:46 +00:00
}
//*************************************************************************
// ScriptRuntimeManager Destructor
ScriptRuntimeManager : : ~ ScriptRuntimeManager ( )
{
OSL_TRACE ( " < ScriptRuntimeManager dtor called > \n " ) ;
s_moduleCount . modCnt . release ( & s_moduleCount . modCnt ) ;
}
//*************************************************************************
// Get the proper XScriptInvocation
2003-03-03 17:39:42 +00:00
Reference < runtime : : XScriptInvocation > SAL_CALL ScriptRuntimeManager : : getScriptRuntime (
2002-10-23 13:13:25 +00:00
const Reference < XInterface > & scriptInfo )
2002-09-27 11:16:30 +00:00
throw ( RuntimeException )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OSL_TRACE ( " ** ==> ScriptRuntimeManager in getScriptRuntime \n " ) ;
2002-09-20 13:37:46 +00:00
2003-03-03 17:39:42 +00:00
Reference < runtime : : XScriptInvocation > xScriptInvocation ;
2002-09-20 13:37:46 +00:00
try
{
2002-11-06 15:26:40 +00:00
Reference < XInterface > xInterface ;
2003-01-21 14:40:49 +00:00
Reference < storage : : XScriptInfo > sinfo =
Reference < storage : : XScriptInfo > ( scriptInfo , UNO_QUERY_THROW ) ;
OUStringBuffer * buf = new OUStringBuffer ( 80 ) ;
buf - > appendAscii ( " /singletons/drafts.com.sun.star.script.framework.theScriptRuntimeFor " ) ;
buf - > append ( sinfo - > getLanguage ( ) ) ;
Any a = m_xContext - > getValueByName ( buf - > makeStringAndClear ( ) ) ;
2002-11-06 15:26:40 +00:00
if ( sal_False = = ( a > > = xInterface ) )
{
throw RuntimeException (
2003-02-06 17:21:30 +00:00
sinfo - > getLanguage ( ) . concat ( OUSTR ( " runtime support is not installed for this language " ) ) ,
2002-11-06 15:26:40 +00:00
Reference < XInterface > ( ) ) ;
}
validateXRef ( xInterface ,
2003-02-20 11:17:55 +00:00
" ScriptRuntimeManager::GetScriptRuntime: cannot get appropriate ScriptRuntime Service "
2002-09-27 11:16:30 +00:00
) ;
2003-03-03 17:39:42 +00:00
xScriptInvocation = Reference < runtime : : XScriptInvocation > ( xInterface , UNO_QUERY_THROW ) ;
2002-09-20 13:37:46 +00:00
}
2002-09-27 11:16:30 +00:00
catch ( Exception & e )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp = OUSTR ( " ScriptRuntimeManager::GetScriptRuntime: " ) ;
throw RuntimeException ( temp . concat ( e . Message ) , Reference < XInterface > ( ) ) ;
2002-09-20 13:37:46 +00:00
}
return xScriptInvocation ;
}
//*************************************************************************
// Get the proper XScriptNameResolver
2003-03-03 17:39:42 +00:00
Reference < runtime : : XScriptNameResolver > SAL_CALL
2002-09-20 13:37:46 +00:00
ScriptRuntimeManager : : getScriptNameResolver ( )
2002-09-27 11:16:30 +00:00
throw ( RuntimeException )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OSL_TRACE ( " ** ==> ScriptRuntimeManager in getScriptNameResolver \n " ) ;
2003-03-03 17:39:42 +00:00
Reference < runtime : : XScriptNameResolver > xScriptNameResolver ;
2002-09-20 13:37:46 +00:00
try
{
2002-11-06 15:26:40 +00:00
Reference < XInterface > xInterface = m_xMgr - > createInstanceWithContext (
2002-09-27 11:16:30 +00:00
OUString : : createFromAscii (
2003-03-03 17:39:42 +00:00
" drafts.com.sun.star.script.framework.runtime.DefaultScriptNameResolver " ) ,
2002-09-27 11:16:30 +00:00
m_xContext ) ;
2002-11-06 15:26:40 +00:00
validateXRef ( xInterface ,
2002-09-27 11:16:30 +00:00
" ScriptRuntimeManager::GetScriptRuntime: cannot get instance of DefaultScriptNameResolver " ) ;
2003-03-03 17:39:42 +00:00
xScriptNameResolver = Reference < runtime : : XScriptNameResolver > ( xInterface , UNO_QUERY_THROW ) ;
2002-09-20 13:37:46 +00:00
}
2002-09-27 11:16:30 +00:00
catch ( Exception & e )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp = OUSTR ( " ScriptRuntimeManager::GetScriptNameResolver: " ) ;
throw RuntimeException ( temp . concat ( e . Message ) , Reference < XInterface > ( ) ) ;
2002-09-20 13:37:46 +00:00
}
return xScriptNameResolver ;
}
//*************************************************************************
// XScriptInvocation implementation
Any SAL_CALL ScriptRuntimeManager : : invoke (
2002-10-23 13:13:25 +00:00
const : : rtl : : OUString & scriptURI ,
2002-09-27 11:16:30 +00:00
const Any & invocationCtx , const Sequence < Any > & aParams ,
Sequence < sal_Int16 > & aOutParamIndex , Sequence < Any > & aOutParam )
throw ( lang : : IllegalArgumentException , script : : CannotConvertException ,
reflection : : InvocationTargetException , RuntimeException )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OSL_TRACE ( " ** ==> ScriptRuntimeManager in runtimemgr invoke \n " ) ;
2002-10-30 13:26:24 +00:00
2002-09-20 13:37:46 +00:00
Any results ;
2002-10-30 13:26:24 +00:00
scripting_constants : : ScriptingConstantsPool & scriptingConstantsPool =
scripting_constants : : ScriptingConstantsPool : : instance ( ) ;
2002-09-20 13:37:46 +00:00
// Initialise resolved context with invocation context,
// the resolved context (resolvedCtx will be modified by the
// resolve method to contain the storage where the script code is
// stored
Any resolvedCtx = invocationCtx ;
2002-10-29 15:52:34 +00:00
2002-09-20 13:37:46 +00:00
try
{
2003-01-28 10:52:17 +00:00
Reference < storage : : XScriptInfo > resolvedScript = resolve ( scriptURI ,
2002-09-27 11:16:30 +00:00
resolvedCtx ) ;
2002-10-23 13:13:25 +00:00
validateXRef ( resolvedScript , " ScriptRuntimeManager::invoke: No resolvedURI " ) ;
2002-10-30 13:26:24 +00:00
2002-11-06 15:26:40 +00:00
Reference < beans : : XPropertySet > xPropSetResolvedCtx ;
if ( sal_False = = ( resolvedCtx > > = xPropSetResolvedCtx ) )
2002-10-30 13:26:24 +00:00
{
throw RuntimeException ( OUSTR (
" ScriptRuntimeManager::invoke : unable to get XPropSetScriptingContext from param " ) ,
Reference < XInterface > ( ) ) ;
}
2002-11-06 15:26:40 +00:00
Any any = xPropSetResolvedCtx - > getPropertyValue (
2002-10-30 13:26:24 +00:00
scriptingConstantsPool . RESOLVED_STORAGE_ID ) ;
2003-05-16 09:14:24 +00:00
sal_Int32 resolvedSid ;
if ( sal_False = = ( any > > = resolvedSid ) )
2002-10-30 13:26:24 +00:00
{
throw RuntimeException ( OUSTR (
2003-05-16 09:14:24 +00:00
" ScriptRuntimeManager::invoke : unable to get resolved storage id from xPropSetResolvedCtx " ) ,
2002-10-30 13:26:24 +00:00
Reference < XInterface > ( ) ) ;
}
2003-05-16 09:14:24 +00:00
OSL_TRACE ( " Storage sid is: %d \n " , resolvedSid ) ;
2002-10-30 13:26:24 +00:00
2002-11-06 15:26:40 +00:00
// modifying the XPropertySet on the resolved Context to contain the
// full script info
2002-10-23 13:13:25 +00:00
Any aResolvedScript ;
aResolvedScript < < = resolvedScript ;
2002-11-06 15:26:40 +00:00
xPropSetResolvedCtx - > setPropertyValue ( scriptingConstantsPool . SCRIPT_INFO ,
2002-10-23 13:13:25 +00:00
aResolvedScript ) ;
2002-09-20 13:37:46 +00:00
2003-03-03 17:39:42 +00:00
Reference < runtime : : XScriptInvocation > xScriptInvocation =
2002-10-23 13:13:25 +00:00
getScriptRuntime ( resolvedScript ) ;
2002-09-27 11:16:30 +00:00
validateXRef ( xScriptInvocation ,
" ScriptRuntimeManager::invoke: cannot get instance of language specific runtime. " ) ;
2002-09-20 13:37:46 +00:00
2002-11-06 15:26:40 +00:00
// the scriptURI is currently passed to the language-dept runtime but
// is not used (may be useful in the future?). All of the script info
// is contained as a property(SCRIPT_INFO) within the resolvedCtx
2002-10-23 13:13:25 +00:00
results = xScriptInvocation - > invoke ( scriptURI , resolvedCtx , aParams ,
2002-09-27 11:16:30 +00:00
aOutParamIndex , aOutParam ) ;
2003-05-16 09:14:24 +00:00
// need to dispose of filesystem storage
OUString filesysString = OUString : : createFromAscii (
" location=filesystem " ) ;
if ( scriptURI . indexOf ( filesysString ) ! = - 1 )
{
Any a = m_xContext - > getValueByName (
scriptingConstantsPool . SCRIPTSTORAGEMANAGER_SERVICE ) ;
Reference < lang : : XEventListener > xEL_ScriptStorageManager ;
if ( sal_False = = ( a > > = xEL_ScriptStorageManager ) )
{
throw RuntimeException ( OUSTR ( " ScriptRuntimeManager::invoke: can't get ScriptStorageManager XEventListener interface when trying to dispose of filesystem storage " ) ,
Reference < XInterface > ( ) ) ;
}
validateXRef ( xEL_ScriptStorageManager , " Cannot get XEventListener from ScriptStorageManager " ) ;
2003-05-21 08:04:36 +00:00
lang : : EventObject event ( resolvedScript ) ;
xEL_ScriptStorageManager - > disposing ( event ) ;
2003-05-16 09:14:24 +00:00
}
2002-09-20 13:37:46 +00:00
}
2002-09-27 11:16:30 +00:00
catch ( lang : : IllegalArgumentException & iae )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp = OUSTR ( " ScriptRuntimeManager::invoke IllegalArgumentException: " ) ;
throw lang : : IllegalArgumentException ( temp . concat ( iae . Message ) ,
Reference < XInterface > ( ) ,
iae . ArgumentPosition ) ;
2002-09-20 13:37:46 +00:00
}
2002-09-27 11:16:30 +00:00
catch ( script : : CannotConvertException & cce )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp = OUSTR ( " ScriptRuntimeManager::invoke CannotConvertException: " ) ;
throw script : : CannotConvertException ( temp . concat ( cce . Message ) ,
Reference < XInterface > ( ) ,
cce . DestinationTypeClass , cce . Reason ,
cce . ArgumentIndex ) ;
2002-09-20 13:37:46 +00:00
}
2002-09-27 11:16:30 +00:00
catch ( reflection : : InvocationTargetException & ite )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp = OUSTR ( " ScriptRuntimeManager::invoke InvocationTargetException: " ) ;
throw reflection : : InvocationTargetException ( temp . concat ( ite . Message ) ,
Reference < XInterface > ( ) , ite . TargetException ) ;
2002-09-20 13:37:46 +00:00
}
2002-10-30 13:26:24 +00:00
catch ( beans : : UnknownPropertyException & e )
{
OUString temp = OUSTR ( " ScriptRuntimeManager::invoke UnknownPropertyException: " ) ;
throw RuntimeException ( temp . concat ( e . Message ) ,
Reference < XInterface > ( ) ) ;
}
catch ( lang : : WrappedTargetException & e )
{
OUString temp = OUSTR ( " ScriptRuntimeManager::invoke WrappedTargetException : " ) ;
throw RuntimeException ( temp . concat ( e . Message ) ,
Reference < XInterface > ( ) ) ;
}
2002-09-27 11:16:30 +00:00
catch ( RuntimeException & re )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp = OUSTR ( " ScriptRuntimeManager::invoke RuntimeException: " ) ;
throw RuntimeException ( temp . concat ( re . Message ) ,
Reference < XInterface > ( ) ) ;
2002-09-20 13:37:46 +00:00
}
2002-11-06 15:26:40 +00:00
catch ( Exception & e )
{
OUString temp = OUSTR ( " ScriptRuntimeManager::invoke Exception: " ) ;
throw RuntimeException ( temp . concat ( e . Message ) ,
Reference < XInterface > ( ) ) ;
}
2002-09-20 13:37:46 +00:00
# ifdef _DEBUG
catch ( . . . )
{
2002-09-27 11:16:30 +00:00
throw RuntimeException ( OUSTR ( " ScriptRuntimeManager::invoke UnknownException: " ) ,
Reference < XInterface > ( ) ) ;
2002-09-20 13:37:46 +00:00
}
# endif
2002-10-23 13:13:25 +00:00
OSL_TRACE ( " ** ==> ScriptRuntimeManager returned from invoke: %s \n " , : : rtl : : OUStringToOString ( results . getValueTypeName ( ) , RTL_TEXTENCODING_ASCII_US ) . pData - > buffer ) ;
2002-09-20 13:37:46 +00:00
return results ;
}
//*************************************************************************
// XScriptNameResolver implementation
2003-01-28 10:52:17 +00:00
Reference < storage : : XScriptInfo > SAL_CALL
2002-10-23 13:13:25 +00:00
ScriptRuntimeManager : : resolve ( const : : rtl : : OUString & scriptURI ,
2002-09-27 11:16:30 +00:00
Any & invocationCtx )
throw ( lang : : IllegalArgumentException , script : : CannotConvertException , RuntimeException )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OSL_TRACE ( " ** ==> ScriptRuntimeManager in resolve \n " ) ;
2003-01-28 10:52:17 +00:00
Reference < storage : : XScriptInfo > resolvedURI ;
2002-09-20 13:37:46 +00:00
2003-03-03 17:39:42 +00:00
Reference < runtime : : XScriptNameResolver > xScriptNameResolver = getScriptNameResolver ( ) ;
2002-09-27 11:16:30 +00:00
validateXRef ( xScriptNameResolver ,
" ScriptRuntimeManager::resolve: No ScriptNameResolver " ) ;
2002-09-20 13:37:46 +00:00
try
{
2002-09-27 11:16:30 +00:00
resolvedURI = xScriptNameResolver - > resolve ( scriptURI , invocationCtx ) ;
2002-09-20 13:37:46 +00:00
}
2002-09-27 11:16:30 +00:00
catch ( lang : : IllegalArgumentException & iae )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp =
OUSTR ( " ScriptRuntimeManager::resolve IllegalArgumentException: " ) ;
throw lang : : IllegalArgumentException ( temp . concat ( iae . Message ) ,
Reference < XInterface > ( ) ,
iae . ArgumentPosition ) ;
2002-09-20 13:37:46 +00:00
}
2002-09-27 11:16:30 +00:00
catch ( script : : CannotConvertException & cce )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp = OUSTR ( " ScriptRuntimeManager::resolve CannotConvertException: " ) ;
throw script : : CannotConvertException ( temp . concat ( cce . Message ) ,
Reference < XInterface > ( ) ,
cce . DestinationTypeClass , cce . Reason ,
cce . ArgumentIndex ) ;
2002-09-20 13:37:46 +00:00
}
2002-09-27 11:16:30 +00:00
catch ( RuntimeException & re )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
OUString temp = OUSTR ( " ScriptRuntimeManager::resolve RuntimeException: " ) ;
throw RuntimeException ( temp . concat ( re . Message ) ,
Reference < XInterface > ( ) ) ;
2002-09-20 13:37:46 +00:00
}
# ifdef _DEBUG
catch ( . . . )
{
2002-09-27 11:16:30 +00:00
throw RuntimeException (
OUSTR ( " ScriptRuntimeManager::resolve UnknownException: " ) ,
Reference < XInterface > ( ) ) ;
2002-09-20 13:37:46 +00:00
}
# endif
return resolvedURI ;
}
//*************************************************************************
2002-09-27 11:16:30 +00:00
OUString SAL_CALL ScriptRuntimeManager : : getImplementationName ( )
throw ( RuntimeException )
2002-09-20 13:37:46 +00:00
{
return s_implName ;
}
//*************************************************************************
sal_Bool SAL_CALL ScriptRuntimeManager : : supportsService ( const OUString & serviceName )
2002-09-27 11:16:30 +00:00
throw ( RuntimeException )
2002-09-20 13:37:46 +00:00
{
OUString const * pNames = s_serviceNames . getConstArray ( ) ;
for ( sal_Int32 nPos = s_serviceNames . getLength ( ) ; nPos - - ; )
{
2002-09-27 11:16:30 +00:00
if ( serviceName . equals ( pNames [ nPos ] ) )
2002-09-20 13:37:46 +00:00
{
return sal_True ;
}
}
return sal_False ;
}
//*************************************************************************
2002-09-27 11:16:30 +00:00
Sequence < OUString > SAL_CALL ScriptRuntimeManager : : getSupportedServiceNames ( )
throw ( RuntimeException )
2002-09-20 13:37:46 +00:00
{
return s_serviceNames ;
}
//*************************************************************************
2002-09-27 11:16:30 +00:00
static Reference < XInterface > SAL_CALL srm_create (
2002-09-20 13:37:46 +00:00
const Reference < XComponentContext > & xCompC )
{
2002-09-27 11:16:30 +00:00
return ( cppu : : OWeakObject * ) new ScriptRuntimeManager ( xCompC ) ;
2002-09-20 13:37:46 +00:00
}
//*************************************************************************
2002-09-27 11:16:30 +00:00
static Sequence < OUString > srm_getSupportedServiceNames ( )
2002-09-20 13:37:46 +00:00
SAL_THROW ( ( ) )
{
return s_serviceNames ;
}
//*************************************************************************
2002-09-27 11:16:30 +00:00
static OUString srm_getImplementationName ( )
2002-09-20 13:37:46 +00:00
SAL_THROW ( ( ) )
{
return s_implName ;
}
//*************************************************************************
Reference < XInterface > SAL_CALL scriptnri_create (
Reference < XComponentContext > const & xComponentContext )
2002-09-27 11:16:30 +00:00
SAL_THROW ( ( Exception ) ) ;
2002-09-20 13:37:46 +00:00
//*************************************************************************
Sequence < OUString > scriptnri_getSupportedServiceNames ( ) SAL_THROW ( ( ) ) ;
//*************************************************************************
OUString scriptnri_getImplementationName ( ) SAL_THROW ( ( ) ) ;
//*************************************************************************
static struct cppu : : ImplementationEntry s_entries [ ] =
{
{
srm_create , srm_getImplementationName ,
srm_getSupportedServiceNames , cppu : : createSingleComponentFactory ,
& s_moduleCount . modCnt , 0
} ,
{
scriptnri_create , scriptnri_getImplementationName ,
scriptnri_getSupportedServiceNames , cppu : : createSingleComponentFactory ,
& s_moduleCount . modCnt , 0
} ,
{ 0 , 0 , 0 , 0 , 0 , 0 }
} ;
} // Namespace
2002-09-27 11:16:30 +00:00
//#######################################################################################
//#### EXPORTED #########################################################################
//#######################################################################################
2002-09-20 13:37:46 +00:00
/**
* Gives the environment this component belongs to .
*/
extern " C "
{
2002-09-27 11:16:30 +00:00
void SAL_CALL component_getImplementationEnvironment ( const sal_Char * * ppEnvTypeName ,
uno_Environment * * ppEnv )
2002-09-20 13:37:46 +00:00
{
* ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
}
/**
* This function creates an implementation section in the registry and another subkey
*
* for each supported service .
* @ param pServiceManager the service manager
* @ param pRegistryKey the registry key
*/
2002-09-27 11:16:30 +00:00
sal_Bool SAL_CALL component_writeInfo ( lang : : XMultiServiceFactory * pServiceManager ,
registry : : XRegistryKey * pRegistryKey )
2002-09-20 13:37:46 +00:00
{
2003-01-29 11:58:11 +00:00
if ( : : cppu : : component_writeInfoHelper ( pServiceManager , pRegistryKey ,
: : scripting_runtimemgr : : s_entries ) )
{
try
{
// register singleton
registry : : XRegistryKey * pKey =
reinterpret_cast < registry : : XRegistryKey * > ( pRegistryKey ) ;
Reference < registry : : XRegistryKey > xKey (
pKey - > createKey (
2003-03-03 17:39:42 +00:00
OUSTR ( " drafts.com.sun.star.script.framework.ScriptRuntimeManager/UNO/SINGLETONS/drafts.com.sun.star.script.framework.runtime.theScriptRuntimeManager " ) ) ) ;
xKey - > setStringValue ( OUSTR ( " drafts.com.sun.star.script.framework.runtime.ScriptRuntimeManager " ) ) ;
2003-01-29 11:58:11 +00:00
return sal_True ;
}
catch ( Exception & exc )
{
}
}
return sal_False ;
2002-09-20 13:37:46 +00:00
}
/**
* This function is called to get service factories for an implementation .
*
* @ param pImplName name of implementation
* @ param pServiceManager a service manager , need for component creation
2002-09-27 11:16:30 +00:00
* @ param pRegistryKey the registry key for this component , need for persistent
* data
2002-09-20 13:37:46 +00:00
* @ return a component factory
*/
2002-09-27 11:16:30 +00:00
void * SAL_CALL component_getFactory ( const sal_Char * pImplName ,
lang : : XMultiServiceFactory * pServiceManager ,
registry : : XRegistryKey * pRegistryKey )
2002-09-20 13:37:46 +00:00
{
2002-09-27 11:16:30 +00:00
return : : cppu : : component_getFactoryHelper ( pImplName , pServiceManager ,
pRegistryKey , : : scripting_runtimemgr : : s_entries ) ;
2002-09-20 13:37:46 +00:00
}
}