Initial commit of Scripting Framework code.
The Scripting Framework Team: Duncan Foster Alexis Ledoux Laszlo Kovacs Misha Krivoruchko Neil Montgomery Tomas O'Connor Noel Power John Rice Darragh Sherwin
This commit is contained in:
131
scripting/java/build.xml
Executable file
131
scripting/java/build.xml
Executable file
@@ -0,0 +1,131 @@
|
||||
<!--
|
||||
#*************************************************************************
|
||||
#
|
||||
# $RCSfile: build.xml,v $
|
||||
#
|
||||
# $Revision: 1.1 $
|
||||
#
|
||||
# last change: $Author: dfoster $ $Date: 2002-09-20 14:37:46 $
|
||||
#
|
||||
# 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): _______________________________________
|
||||
#
|
||||
#
|
||||
#
|
||||
#*************************************************************************
|
||||
-->
|
||||
<project name="Scipting Framework" default="jar" basedir=".">
|
||||
|
||||
<!-- =================== Environmental Properties ======================= -->
|
||||
|
||||
<property name="prj" value=".."/>
|
||||
<property name="build.compiler" value="classic"/>
|
||||
<property name="optimize" value="on"/>
|
||||
<property name="debug" value="on"/>
|
||||
<property name="scriptingclasses" value="${out}/class/scriptingtemp"/>
|
||||
<property name="storageclasses" value="${out}/class/storagetemp"/>
|
||||
<property name="bindir" value="${out}/bin"/>
|
||||
<property name="scriptingjarname" value="ScriptRuntimeForJava.jar"/>
|
||||
<property name="storagejarname" value="StorageProxy.jar"/>
|
||||
|
||||
<!-- ==================== classpath setting ============================ -->
|
||||
<path id="idlclasspath">
|
||||
<pathelement location="${prj}/../unoil/${inpath}/class/unoil.jar"/>
|
||||
</path>
|
||||
|
||||
<!-- ===================== Prepare Directories ========================= -->
|
||||
<target name="prepare">
|
||||
<mkdir dir="${scriptingclasses}"/>
|
||||
<mkdir dir="${storageclasses}"/>
|
||||
<mkdir dir="${jardir}"/>
|
||||
<copy file="StorageProxy/com/sun/star/scripting/storage/scriptURI.xml" todir="${bindir}"/>
|
||||
</target>
|
||||
|
||||
<!-- ======================== Compile Classes ========================== -->
|
||||
<target name="compile" depends="prepare">
|
||||
<javac srcdir="JRuntime/" destdir="${scriptingclasses}"
|
||||
includes="**/*.java" classpathref="idlclasspath"
|
||||
debug="${debug}" optimize="${optimize}" deprecation="on"/>
|
||||
<javac srcdir="StorageProxy/" destdir="${storageclasses}"
|
||||
includes="**/*.java" classpathref="idlclasspath"
|
||||
debug="${debug}" optimize="${optimize}" deprecation="on"/>
|
||||
</target>
|
||||
|
||||
<!-- ===================== jar ========================= -->
|
||||
<target name="jar" depends="compile">
|
||||
<jar jarfile="${jardir}/${scriptingjarname}"
|
||||
basedir="${scriptingclasses}">
|
||||
<manifest>
|
||||
<attribute name="Built-By" value="Sun Microsystems"/>
|
||||
<attribute name="RegistrationClassName" value="ScriptRuntimeComponentRegistration"/>
|
||||
</manifest>
|
||||
</jar>
|
||||
<jar jarfile="${jardir}/${storagejarname}"
|
||||
basedir="${storageclasses}">
|
||||
<manifest>
|
||||
<attribute name="Built-By" value="Sun Microsystems"/>
|
||||
<attribute name="RegistrationClassName" value="StorageProxy"/>
|
||||
</manifest>
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
<!-- ====================== Clean Generated Files ===================== -->
|
||||
<target name="clean">
|
||||
<delete dir="${scriptingclasses}"/>
|
||||
<delete dir="${storageclasses}"/>
|
||||
<delete dir="${jardir}/${scriptingjarname}"/>
|
||||
<delete dir="${jardir}/${storagejarname}"/>
|
||||
</target>
|
||||
|
||||
<!-- ========================= All In One Build ======================= -->
|
||||
<target name="all" depends="clean,jar"/>
|
||||
|
||||
|
||||
</project>
|
101
scripting/java/makefile.mk
Executable file
101
scripting/java/makefile.mk
Executable file
@@ -0,0 +1,101 @@
|
||||
#*************************************************************************
|
||||
#
|
||||
# $RCSfile: makefile.mk,v $
|
||||
#
|
||||
# $Revision: 1.1 $
|
||||
#
|
||||
# last change: $Author: dfoster $ $Date: 2002-09-20 14:37:46 $
|
||||
#
|
||||
# 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): _______________________________________
|
||||
#
|
||||
#
|
||||
#
|
||||
#*************************************************************************
|
||||
|
||||
PRJ=..
|
||||
PRJNAME=scripting
|
||||
TARGET=scriptruntimeforjava
|
||||
|
||||
.INCLUDE : $(PRJ)/util/makefile.pmk
|
||||
|
||||
ANT_BUILDFILE=build.xml
|
||||
|
||||
.IF "$(debug)$(DEBUG)"!=""
|
||||
ANTFLAGS=-Ddebug=on -Doptimize=off
|
||||
.ENDIF
|
||||
|
||||
JARFILES=ant.jar jurt.jar unoil.jar ridl.jar juh.jar java_uno.jar jut.jar
|
||||
|
||||
.INCLUDE : $(PRJ)/util/ant.pmk
|
||||
|
||||
prepare .PHONY:
|
||||
$(ANT) $(ANTFLAGS) $@
|
||||
|
||||
compile .PHONY:
|
||||
$(ANT) $(ANTFLAGS) $@
|
||||
|
||||
jar .PHONY:
|
||||
$(ANT) $(ANTFLAGS) $@
|
||||
|
||||
javadoc .PHONY:
|
||||
$(ANT) $(ANTFLAGS) $@
|
||||
|
||||
clean .PHONY:
|
||||
$(ANT) $(ANTFLAGS) $@
|
||||
|
||||
all .PHONY:
|
||||
$(ANT) $(ANTFLAGS) all
|
||||
|
||||
testcp:
|
||||
@echo $(CLASSPATH)
|
||||
|
||||
xxxx:
|
||||
@echo $(PATH)
|
3
scripting/source/protocolhandler/exports.dxp
Normal file
3
scripting/source/protocolhandler/exports.dxp
Normal file
@@ -0,0 +1,3 @@
|
||||
component_getImplementationEnvironment
|
||||
component_writeInfo
|
||||
component_getFactory
|
99
scripting/source/protocolhandler/makefile.mk
Normal file
99
scripting/source/protocolhandler/makefile.mk
Normal file
@@ -0,0 +1,99 @@
|
||||
#*************************************************************************
|
||||
#
|
||||
# $RCSfile: makefile.mk,v $
|
||||
#
|
||||
# $Revision: 1.1 $
|
||||
#
|
||||
# last change: $Author: dfoster $ $Date: 2002-09-20 14:33:11 $
|
||||
#
|
||||
# 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): _______________________________________
|
||||
#
|
||||
#
|
||||
#
|
||||
#*************************************************************************
|
||||
PRJ=..$/..
|
||||
|
||||
PRJNAME= scripting
|
||||
TARGET= protocolhandler
|
||||
USE_DEFFILE= TRUE
|
||||
NO_BSYMBOLIC= TRUE
|
||||
ENABLE_EXCEPTIONS=TRUE
|
||||
COMP1TYPELIST=$(TARGET)
|
||||
|
||||
# --- Settings -----------------------------------------------------
|
||||
|
||||
.INCLUDE : settings.mk
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
.INCLUDE : ..$/cppumaker.mk
|
||||
|
||||
SLOFILES=\
|
||||
$(SLO)$/scripthandler.obj\
|
||||
|
||||
SHL1TARGET= $(TARGET)
|
||||
|
||||
SHL1STDLIBS= \
|
||||
$(CPPULIB) \
|
||||
$(CPPUHELPERLIB) \
|
||||
$(SALLIB)
|
||||
|
||||
SHL1DEPN=
|
||||
SHL1IMPLIB= i$(TARGET)
|
||||
SHL1LIBS= $(SLB)$/$(TARGET).lib
|
||||
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
|
||||
|
||||
DEF1NAME= $(SHL1TARGET)
|
||||
DEF1EXPORTFILE= exports.dxp
|
||||
|
||||
# --- Targets ------------------------------------------------------
|
||||
|
||||
.INCLUDE : target.mk
|
27
scripting/source/protocolhandler/protocolhandler.xml
Executable file
27
scripting/source/protocolhandler/protocolhandler.xml
Executable file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
|
||||
<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<module-name> ScriptProtocolHandler </module-name>
|
||||
<component-description>
|
||||
<author> Noel Power</author>
|
||||
<name> com.sun.star.frame.ProtocolHandler</name>
|
||||
<description>
|
||||
This component is part of the Scripting Framework
|
||||
</description>
|
||||
<loader-name> com.sun.star.loader.SharedLibrary </loader-name>
|
||||
<language> c++ </language>
|
||||
<status value="com"/>
|
||||
<supported-service> com.sun.star.frame.ProtocolHandler </supported-service>
|
||||
<type> com.sun.star.frame.XDispatchProvider </type>
|
||||
<type> com.sun.star.frame.XNotifyingDispatch </type>
|
||||
<type> com.sun.star.lang.XServiceInfo </type>
|
||||
<type> com.sun.star.lang.XInitialization </type>
|
||||
<type> com.sun.star.io.IOException </type>
|
||||
</component-description>
|
||||
<project-build-dependency> cppuhelper </project-build-dependency>
|
||||
<project-build-dependency> cppu </project-build-dependency>
|
||||
<project-build-dependency> sal </project-build-dependency>
|
||||
<runtime-module-dependency> cppuhelper2$(COM) </runtime-module-dependency>
|
||||
<runtime-module-dependency> cppu2 </runtime-module-dependency>
|
||||
<runtime-module-dependency> sal2 </runtime-module-dependency>
|
||||
</module-description>
|
399
scripting/source/protocolhandler/scripthandler.cxx
Normal file
399
scripting/source/protocolhandler/scripthandler.cxx
Normal file
@@ -0,0 +1,399 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: scripthandler.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:13 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include "scripthandler.hxx"
|
||||
|
||||
#include <osl/mutex.hxx>
|
||||
#include <com/sun/star/frame/DispatchResultEvent.hpp>
|
||||
#include <com/sun/star/frame/DispatchResultState.hpp>
|
||||
#include <com/sun/star/frame/XController.hpp>
|
||||
#include <com/sun/star/frame/XModel.hpp>
|
||||
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
|
||||
|
||||
#include <cppuhelper/factory.hxx>
|
||||
#include <util/util.hxx>
|
||||
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::com::sun::star::frame;
|
||||
using namespace ::com::sun::star::util;
|
||||
using namespace ::com::sun::star::beans;
|
||||
using namespace ::com::sun::star::lang;
|
||||
using namespace ::drafts::com::sun::star::script::framework;
|
||||
|
||||
namespace scripting_protocolhandler
|
||||
{
|
||||
|
||||
const sal_Char * const MYSERVICENAME = "com.sun.star.frame.ProtocolHandler";
|
||||
const sal_Char * const MYIMPLNAME = "com.sun.star.comp.ScriptProtocolHandler";
|
||||
const sal_Char * MYSCHEME = "script:";
|
||||
const sal_Int32 MYSCHEME_LEN = 7;
|
||||
|
||||
void SAL_CALL ScriptProtocolHandler::initialize( const css::uno::Sequence < css::uno::Any >& aArguments ) throw ( css::uno::Exception )
|
||||
{
|
||||
if (m_bInitialised)
|
||||
{
|
||||
OSL_TRACE("ScriptProtocolHandler Already initialised");
|
||||
return;
|
||||
}
|
||||
// first argument contains a reference to the frame (may be empty or the desktop, but usually it's a "real" frame)
|
||||
aArguments[0] >>= m_xFrame;
|
||||
|
||||
validateXRef(m_xFactory, "ScriptProtocolHandler::initialize: No Service Manager available");
|
||||
OSL_TRACE("ScriptProtocolHandler::initialize\n " );
|
||||
try
|
||||
{
|
||||
css::uno::Sequence < css::uno::Any > args(1);
|
||||
Reference < XModel > xModel;
|
||||
if ( m_xFrame.is() )
|
||||
{
|
||||
Reference < XController > xController = m_xFrame->getController();
|
||||
if ( xController .is() )
|
||||
xModel = xController->getModel();
|
||||
}
|
||||
|
||||
args[0] <<= xModel;
|
||||
Reference< XInterface > xXinterface = m_xFactory->createInstanceWithArguments(::rtl::OUString::createFromAscii(
|
||||
"drafts.com.sun.star.script.framework.provider.FunctionProvider"),args);
|
||||
validateXRef(xXinterface, "ScriptProtocolHandler::initialize: cannot get instance of FunctionProvider" );
|
||||
|
||||
m_xFunctionProvider = Reference< provider::XFunctionProvider >(xXinterface, UNO_QUERY_THROW);
|
||||
m_bInitialised = true;
|
||||
}
|
||||
catch(RuntimeException &e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptProtocolHandler::initialize: ") + e.Message, Reference< XInterface >());
|
||||
}
|
||||
catch (Exception &e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptProtocolHandler::initialize: ") + e.Message, Reference< XInterface >());
|
||||
OSL_TRACE("ScriptProtocolHandler::initialise: Caught Exception %s",::rtl::OUStringToOString(e.Message,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUSTR("criptProtocolHandler::initialize: UnknownException: "),
|
||||
Reference<XInterface> ());
|
||||
|
||||
OSL_TRACE("ScriptProtocolHandler::initialize: Unknown exception caught");
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
Reference< XDispatch > SAL_CALL ScriptProtocolHandler::queryDispatch( const URL& aURL, const ::rtl::OUString& sTargetFrameName,
|
||||
sal_Int32 nSearchFlags ) throw( ::com::sun::star::uno::RuntimeException )
|
||||
{
|
||||
Reference< XDispatch > xDispatcher;
|
||||
OSL_TRACE("ScriptProtocolHandler::queryDispatch - 1\n" );
|
||||
|
||||
if( aURL.Complete.compareToAscii( ::scripting_protocolhandler::MYSCHEME,
|
||||
::scripting_protocolhandler::MYSCHEME_LEN ) == 0 )
|
||||
xDispatcher = this;
|
||||
OSL_TRACE("ScriptProtocolHandler::queryDispatch - 2\n" );
|
||||
|
||||
|
||||
return xDispatcher;
|
||||
}
|
||||
|
||||
Sequence< Reference < XDispatch > > SAL_CALL
|
||||
ScriptProtocolHandler::queryDispatches( const Sequence < DispatchDescriptor >& seqDescriptor )
|
||||
throw( RuntimeException )
|
||||
{
|
||||
sal_Int32 nCount = seqDescriptor.getLength();
|
||||
Sequence< Reference < XDispatch > > lDispatcher(nCount);
|
||||
for( sal_Int32 i=0; i<nCount; ++i )
|
||||
lDispatcher[i] = this->queryDispatch( seqDescriptor[i].FeatureURL,
|
||||
seqDescriptor[i].FrameName,
|
||||
seqDescriptor[i].SearchFlags );
|
||||
OSL_TRACE("ScriptProtocolHandler::queryDispatches \n" );
|
||||
|
||||
return lDispatcher;
|
||||
}
|
||||
|
||||
void SAL_CALL ScriptProtocolHandler::dispatchWithNotification( const URL& aURL, const Sequence < PropertyValue >& lArgs,
|
||||
const Reference< XDispatchResultListener >& xListener ) throw (RuntimeException)
|
||||
{
|
||||
sal_Bool bSuccess = sal_False;
|
||||
Any invokeResult;
|
||||
|
||||
OSL_TRACE("ScriptProtocolHandler::dispatchWithNotification - start \nInput URL %s \n",
|
||||
::rtl::OUStringToOString(aURL.Complete,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
if ( m_bInitialised )
|
||||
{
|
||||
try
|
||||
{
|
||||
Reference < provider::XFunction > xFunc = m_xFunctionProvider->getFunction(aURL.Complete);
|
||||
validateXRef(xFunc, "ScriptProtocolHandler::dispatchWithNotification: validate xFunc - unable to obtain XFunction interface");
|
||||
|
||||
Sequence< Any > inArgs(0);
|
||||
Sequence< Any > outArgs(0);
|
||||
Sequence< sal_Int16 > outIndex;
|
||||
|
||||
invokeResult = xFunc->invoke(inArgs,outIndex,outArgs);
|
||||
bSuccess = sal_True;
|
||||
}
|
||||
|
||||
// Office doesn't handle exceptions rethrown here very well, it cores,
|
||||
// all we can is log them and then set fail for the dispatch event!
|
||||
// (if there is a listener of course)
|
||||
catch(RuntimeException &e)
|
||||
{
|
||||
OSL_TRACE("ScriptProtocolHandler::dispatchWithNotificationn caught RuntimeException: %s",::rtl::OUStringToOString(e.Message,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
::rtl::OUString reason;
|
||||
reason.createFromAscii("ScriptProtocolHandler::dispatchWithNotification: caught RuntimeException: ");
|
||||
reason = reason + e.Message;
|
||||
invokeResult <<= reason;
|
||||
}
|
||||
catch (Exception &e)
|
||||
{
|
||||
OSL_TRACE("ScriptProtocolHandler::dispatchWithNotificationn caught Exception: %s",::rtl::OUStringToOString(e.Message,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
::rtl::OUString reason;
|
||||
reason.createFromAscii("ScriptProtocolHandler::dispatchWithNotification: caught Exception: ");
|
||||
reason = reason + e.Message;
|
||||
invokeResult <<= reason;
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
::rtl::OUString reason;
|
||||
reason.createFromAscii("ScriptProtocolHandler::dispatchWithNotification: caught unknown exception ");
|
||||
invokeResult <<= reason;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
OSL_TRACE("ScriptProtocolHandler::dispatchWithNotification: failed, ScriptProtocolHandler not initialised");
|
||||
::rtl::OUString reason;
|
||||
reason.createFromAscii("ScriptProtocolHandler::dispatchWithNotification failed, ScriptProtocolHandler not initialised");
|
||||
invokeResult <<= reason;
|
||||
}
|
||||
|
||||
if( xListener.is() )
|
||||
{
|
||||
// always call dispatchFinished(), because we didn't load a document but
|
||||
// executed a macro instead!
|
||||
::com::sun::star::frame::DispatchResultEvent aEvent;
|
||||
|
||||
aEvent.Source = static_cast< ::cppu::OWeakObject* >(this);
|
||||
aEvent.Result = invokeResult;
|
||||
if( bSuccess )
|
||||
aEvent.State = ::com::sun::star::frame::DispatchResultState::SUCCESS;
|
||||
else
|
||||
aEvent.State = ::com::sun::star::frame::DispatchResultState::FAILURE;
|
||||
|
||||
xListener->dispatchFinished( aEvent ) ;
|
||||
}
|
||||
OSL_TRACE("ScriptProtocolHandler::dispatchWithNotification - end\n" );
|
||||
|
||||
}
|
||||
|
||||
void SAL_CALL ScriptProtocolHandler::dispatch( const URL& aURL, const Sequence< PropertyValue >& lArgs )
|
||||
throw ( RuntimeException )
|
||||
{
|
||||
dispatchWithNotification( aURL, lArgs, Reference < XDispatchResultListener >() );
|
||||
}
|
||||
|
||||
void SAL_CALL ScriptProtocolHandler::addStatusListener( const Reference< XStatusListener >& xControl, const URL& aURL )
|
||||
throw (RuntimeException)
|
||||
{
|
||||
// implement if status is supported
|
||||
}
|
||||
|
||||
void SAL_CALL ScriptProtocolHandler::removeStatusListener( const Reference< XStatusListener >& xControl, const URL& aURL )
|
||||
throw (RuntimeException)
|
||||
{
|
||||
}
|
||||
|
||||
ScriptProtocolHandler::ScriptProtocolHandler( Reference < css::lang::XMultiServiceFactory > const& rFact )
|
||||
: m_xFactory( rFact ), m_bInitialised(false)
|
||||
{
|
||||
OSL_TRACE("ScriptProtocolHandler::ScriptProtocolHandler - ctor\n" );
|
||||
}
|
||||
|
||||
ScriptProtocolHandler::~ScriptProtocolHandler()
|
||||
{
|
||||
OSL_TRACE("ScriptProtocolHandler::ScriptProtocolHandler - dtor\n" );
|
||||
}
|
||||
|
||||
/* XServiceInfo */
|
||||
::rtl::OUString SAL_CALL ScriptProtocolHandler::getImplementationName() throw( RuntimeException )
|
||||
{
|
||||
return impl_getStaticImplementationName();
|
||||
}
|
||||
|
||||
/* XServiceInfo */
|
||||
sal_Bool SAL_CALL ScriptProtocolHandler::supportsService( const ::rtl::OUString& sServiceName ) throw( RuntimeException )
|
||||
{
|
||||
Sequence< ::rtl::OUString > seqServiceNames = getSupportedServiceNames();
|
||||
const ::rtl::OUString* pArray = seqServiceNames.getConstArray();
|
||||
for ( sal_Int32 nCounter=0; nCounter<seqServiceNames.getLength(); nCounter++ )
|
||||
{
|
||||
if ( pArray[nCounter] == sServiceName )
|
||||
{
|
||||
return sal_True ;
|
||||
}
|
||||
}
|
||||
|
||||
return sal_False ;
|
||||
}
|
||||
|
||||
/* XServiceInfo */
|
||||
Sequence< ::rtl::OUString > SAL_CALL ScriptProtocolHandler::getSupportedServiceNames() throw( RuntimeException )
|
||||
{
|
||||
return impl_getStaticSupportedServiceNames();
|
||||
}
|
||||
|
||||
/* Helper for XServiceInfo */
|
||||
Sequence< ::rtl::OUString > ScriptProtocolHandler::impl_getStaticSupportedServiceNames()
|
||||
{
|
||||
::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
|
||||
Sequence< ::rtl::OUString > seqServiceNames( 1 );
|
||||
seqServiceNames.getArray() [0] = ::rtl::OUString::createFromAscii( ::scripting_protocolhandler::MYSERVICENAME );
|
||||
return seqServiceNames ;
|
||||
}
|
||||
|
||||
/* Helper for XServiceInfo */
|
||||
::rtl::OUString ScriptProtocolHandler::impl_getStaticImplementationName()
|
||||
{
|
||||
return ::rtl::OUString::createFromAscii( ::scripting_protocolhandler::MYIMPLNAME);
|
||||
}
|
||||
|
||||
/* Helper for registry */
|
||||
Reference < XInterface > SAL_CALL ScriptProtocolHandler::impl_createInstance( const Reference < css::lang::XMultiServiceFactory >& xServiceManager ) throw( RuntimeException )
|
||||
{
|
||||
return Reference < XInterface > ( *new ScriptProtocolHandler( xServiceManager ) );
|
||||
}
|
||||
|
||||
/* Factory for registration */
|
||||
Reference < XSingleServiceFactory > ScriptProtocolHandler::impl_createFactory( const Reference< XMultiServiceFactory >& xServiceManager )
|
||||
{
|
||||
Reference < XSingleServiceFactory > xReturn (
|
||||
cppu::createSingleFactory( xServiceManager,
|
||||
ScriptProtocolHandler::impl_getStaticImplementationName(),
|
||||
ScriptProtocolHandler::impl_createInstance,
|
||||
ScriptProtocolHandler::impl_getStaticSupportedServiceNames() )
|
||||
);
|
||||
return xReturn;
|
||||
}
|
||||
|
||||
}// namespace scripting_protocolhandler
|
||||
|
||||
/* exported functions for registration */
|
||||
extern "C" {
|
||||
|
||||
void SAL_CALL component_getImplementationEnvironment( const sal_Char** ppEnvironmentTypeName ,
|
||||
uno_Environment** ppEnvironment )
|
||||
{
|
||||
*ppEnvironmentTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
|
||||
}
|
||||
|
||||
sal_Bool SAL_CALL component_writeInfo( void* pServiceManager ,
|
||||
void* pRegistryKey )
|
||||
{
|
||||
Reference< css::registry::XRegistryKey > xKey( reinterpret_cast< css::registry::XRegistryKey* >( pRegistryKey ) ) ;
|
||||
|
||||
::rtl::OUString aStr = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/"));
|
||||
aStr += ::scripting_protocolhandler::ScriptProtocolHandler::impl_getStaticImplementationName();
|
||||
|
||||
aStr += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/UNO/SERVICES"));
|
||||
Reference< css::registry::XRegistryKey > xNewKey = xKey->createKey( aStr );
|
||||
xNewKey->createKey( ::rtl::OUString::createFromAscii(::scripting_protocolhandler::MYSERVICENAME) );
|
||||
|
||||
return sal_True;
|
||||
}
|
||||
|
||||
void* SAL_CALL component_getFactory( const sal_Char* pImplementationName ,
|
||||
void* pServiceManager ,
|
||||
void* pRegistryKey )
|
||||
{
|
||||
// Set default return value for this operation - if it failed.
|
||||
void* pReturn = NULL ;
|
||||
|
||||
if (
|
||||
( pImplementationName != NULL ) &&
|
||||
( pServiceManager != NULL )
|
||||
)
|
||||
{
|
||||
// Define variables which are used in following macros.
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory > xFactory ;
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceManager( reinterpret_cast< ::com::sun::star::lang::XMultiServiceFactory* >( pServiceManager ) ) ;
|
||||
|
||||
if ( ::scripting_protocolhandler::ScriptProtocolHandler::impl_getStaticImplementationName().equals( ::rtl::OUString::createFromAscii( pImplementationName ) ) )
|
||||
{
|
||||
xFactory = ::scripting_protocolhandler::ScriptProtocolHandler::impl_createFactory( xServiceManager );
|
||||
}
|
||||
|
||||
// Factory is valid - service was found.
|
||||
if ( xFactory.is() )
|
||||
{
|
||||
xFactory->acquire();
|
||||
pReturn = xFactory.get();
|
||||
}
|
||||
}
|
||||
|
||||
// Return with result of this operation.
|
||||
return pReturn ;
|
||||
}
|
||||
} // extern "C"
|
||||
|
||||
|
190
scripting/source/protocolhandler/scripthandler.hxx
Normal file
190
scripting/source/protocolhandler/scripthandler.hxx
Normal file
@@ -0,0 +1,190 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: scripthandler.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:14 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#ifndef _SFX2_SCRIPTHANDLER_HXX
|
||||
#define _SFX2_SCRIPTHANDLER_HXX
|
||||
|
||||
// .. as always
|
||||
#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
|
||||
#include <com/sun/star/uno/Reference.h>
|
||||
#endif
|
||||
|
||||
#ifndef _COM_SUN_STAR_UNO_RUNTIMEEXCEPTION_HPP_
|
||||
#include <com/sun/star/uno/RuntimeException.hpp>
|
||||
#endif
|
||||
|
||||
// base classes
|
||||
#ifndef _COM_SUN_STAR_FRAME_XDISPATCHPROVIDER_HPP_
|
||||
#include <com/sun/star/frame/XDispatchProvider.hpp>
|
||||
#endif
|
||||
|
||||
#ifndef _COM_SUN_STAR_FRAME_XNOTIFYINGDISPATCJ_HPP_
|
||||
#include <com/sun/star/frame/XNotifyingDispatch.hpp>
|
||||
#endif
|
||||
|
||||
#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#endif
|
||||
|
||||
#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
|
||||
#include <com/sun/star/lang/XInitialization.hpp>
|
||||
#endif
|
||||
|
||||
#ifndef _CPPUHELPER_IMPLBASE4_HXX_
|
||||
#include <cppuhelper/implbase4.hxx>
|
||||
#endif
|
||||
|
||||
#include <drafts/com/sun/star/script/framework/provider/XFunctionProvider.hpp>
|
||||
|
||||
|
||||
namespace rtl
|
||||
{
|
||||
class OUString;
|
||||
};
|
||||
|
||||
namespace com
|
||||
{
|
||||
namespace sun
|
||||
{
|
||||
namespace star
|
||||
{
|
||||
namespace uno
|
||||
{
|
||||
class Any;
|
||||
}
|
||||
namespace lang
|
||||
{
|
||||
class XMultiServiceFactory;
|
||||
class XSingleServiceFactory;
|
||||
}
|
||||
namespace frame
|
||||
{
|
||||
class XFrame;
|
||||
class XModel;
|
||||
class XDispatch;
|
||||
class XNotifyingDispatch;
|
||||
class XDispatchResultListener;
|
||||
struct DispatchDescriptor;
|
||||
}
|
||||
namespace beans
|
||||
{
|
||||
struct PropertyValue;
|
||||
}
|
||||
namespace util
|
||||
{
|
||||
struct URL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace scripting_protocolhandler
|
||||
{
|
||||
|
||||
// for simplification
|
||||
#define css ::com::sun::star
|
||||
#define dcss ::drafts::com::sun::star
|
||||
|
||||
class ScriptProtocolHandler : public ::cppu::WeakImplHelper4< css::frame::XDispatchProvider, css::frame::XNotifyingDispatch, css::lang::XServiceInfo, css::lang::XInitialization >
|
||||
{
|
||||
private:
|
||||
bool m_bInitialised;
|
||||
css::uno::Reference < css::lang::XMultiServiceFactory > m_xFactory;
|
||||
css::uno::Reference < css::frame::XFrame > m_xFrame;
|
||||
css::uno::Reference < dcss::script::framework::provider::XFunctionProvider > m_xFunctionProvider;
|
||||
|
||||
public:
|
||||
ScriptProtocolHandler( const css::uno::Reference < css::lang::XMultiServiceFactory >& xFactory );
|
||||
virtual ~ScriptProtocolHandler();
|
||||
|
||||
/* XServiceInfo */
|
||||
virtual ::rtl::OUString SAL_CALL getImplementationName() throw( css::uno::RuntimeException );
|
||||
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& sServiceName ) throw( css::uno::RuntimeException );
|
||||
virtual css::uno::Sequence < ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw( css::uno::RuntimeException );
|
||||
|
||||
/* Helper for XServiceInfo */
|
||||
static css::uno::Sequence < ::rtl::OUString > impl_getStaticSupportedServiceNames();
|
||||
static ::rtl::OUString impl_getStaticImplementationName();
|
||||
|
||||
/* Helper for registry */
|
||||
static css::uno::Reference < css::uno::XInterface > SAL_CALL impl_createInstance( const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager ) throw( css::uno::RuntimeException );
|
||||
static css::uno::Reference < css::lang::XSingleServiceFactory > impl_createFactory( const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager );
|
||||
|
||||
/* Implementation for XDispatchProvider */
|
||||
virtual css::uno::Reference < css::frame::XDispatch > SAL_CALL
|
||||
queryDispatch( const css::util::URL& aURL, const ::rtl::OUString& sTargetFrameName,
|
||||
sal_Int32 eSearchFlags ) throw( css::uno::RuntimeException ) ;
|
||||
virtual css::uno::Sequence< css::uno::Reference < css::frame::XDispatch > > SAL_CALL
|
||||
queryDispatches( const css::uno::Sequence < css::frame::DispatchDescriptor >& seqDescriptor )
|
||||
throw( css::uno::RuntimeException );
|
||||
|
||||
/* Implementation for X(Notifying)Dispatch */
|
||||
virtual void SAL_CALL dispatchWithNotification( const css::util::URL& aURL, const css::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArgs, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchResultListener >& Listener ) throw (css::uno::RuntimeException);
|
||||
virtual void SAL_CALL dispatch( const css::util::URL& aURL, const css::uno::Sequence< css::beans::PropertyValue >& lArgs ) throw (css::uno::RuntimeException);
|
||||
virtual void SAL_CALL addStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xControl, const css::util::URL& aURL ) throw (css::uno::RuntimeException);
|
||||
virtual void SAL_CALL removeStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xControl, const css::util::URL& aURL ) throw (css::uno::RuntimeException);
|
||||
|
||||
/* Implementation for XInitialization */
|
||||
virtual void SAL_CALL initialize( const css::uno::Sequence < css::uno::Any >& aArguments ) throw ( css::uno::Exception );
|
||||
};
|
||||
|
||||
}
|
||||
#endif
|
178
scripting/source/provider/ScriptingContext.cxx
Executable file
178
scripting/source/provider/ScriptingContext.cxx
Executable file
@@ -0,0 +1,178 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptingContext.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:20 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cppuhelper/implementationentry.hxx>
|
||||
#include <cppuhelper/factory.hxx>
|
||||
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
|
||||
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||
#include <com/sun/star/registry/XRegistryKey.hpp>
|
||||
|
||||
#include <util/scriptingconstants.hxx>
|
||||
#include <util/util.hxx>
|
||||
|
||||
#include "ScriptingContext.hxx"
|
||||
|
||||
using namespace com::sun::star::uno;
|
||||
using namespace com::sun::star;
|
||||
|
||||
namespace func_provider
|
||||
{
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
// XScriptingContext implementation
|
||||
//
|
||||
//*************************************************************************
|
||||
ScriptingContext::ScriptingContext( const Reference< XComponentContext > & xContext ) : m_xContext( xContext )
|
||||
{
|
||||
OSL_TRACE( "< ScriptingContext ctor called >\n" );
|
||||
|
||||
validateXRef(m_xContext, "ScriptingContext::ScriptingContext: No context available\n");
|
||||
|
||||
//Setup internal hash map
|
||||
Any nullAny;
|
||||
|
||||
m_propertyMap[scripting_constants::DOC_REF] = nullAny;
|
||||
m_propertyMap[scripting_constants::DOC_STORAGE_ID] = nullAny;
|
||||
m_propertyMap[scripting_constants::DOC_URI] = nullAny;
|
||||
m_propertyMap[scripting_constants::RESOLVED_STORAGE_ID] = nullAny;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
bool ScriptingContext::validateKey( const ::rtl::OUString& key)
|
||||
{
|
||||
::osl::Guard< osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
return ( m_propertyMap.find( key ) != m_propertyMap.end() );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
ScriptingContext::~ScriptingContext()
|
||||
{
|
||||
OSL_TRACE( "< ScriptingContext dtor called >\n" );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// XPropertySet implementation
|
||||
//
|
||||
//*************************************************************************
|
||||
Reference< beans::XPropertySetInfo > SAL_CALL ScriptingContext::getPropertySetInfo( ) throw (RuntimeException)
|
||||
{
|
||||
return Reference< beans::XPropertySetInfo > (); // Not supported
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptingContext::setPropertyValue( const ::rtl::OUString& aPropertyName, const Any& aValue ) throw (beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, RuntimeException)
|
||||
{
|
||||
if ( !validateKey(aPropertyName) )
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptingContext::setPropertyValue: invalid key"),
|
||||
Reference< XInterface >());
|
||||
}
|
||||
::osl::Guard< osl::Mutex > aGuard( m_mutex );
|
||||
m_propertyMap[ aPropertyName ] = aValue;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Any SAL_CALL ScriptingContext::getPropertyValue( const ::rtl::OUString& PropertyName ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, RuntimeException)
|
||||
{
|
||||
if ( !validateKey(PropertyName) )
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptingContext::getPropertyValue: invalid key"),
|
||||
Reference< XInterface >());
|
||||
}
|
||||
return m_propertyMap[ PropertyName ];
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptingContext::addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const Reference< beans::XPropertyChangeListener >& xListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, RuntimeException)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptingContext::addPropertyChangeListener: method not supported"),
|
||||
Reference< XInterface >());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptingContext::removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const Reference< beans::XPropertyChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, RuntimeException)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptingContext::removePropertyChangeListener: method not supported"),
|
||||
Reference< XInterface >());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptingContext::addVetoableChangeListener( const ::rtl::OUString& PropertyName, const Reference< beans::XVetoableChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, RuntimeException)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptingContext::addVetoableChangeListener: method not supported"),
|
||||
Reference< XInterface >());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptingContext::removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const Reference< beans::XVetoableChangeListener >& aListener ) throw (beans::UnknownPropertyException, lang::WrappedTargetException, RuntimeException)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptingContext::removeVetoableChangeListener: method not supported"),
|
||||
Reference< XInterface >());
|
||||
}
|
||||
|
||||
} // namespace func_provider
|
||||
|
||||
|
||||
|
112
scripting/source/provider/ScriptingContext.hxx
Normal file
112
scripting/source/provider/ScriptingContext.hxx
Normal file
@@ -0,0 +1,112 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptingContext.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:21 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#ifndef _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_PROTOCOLHANDLER_SCRIPTING_CONTEXT_HXX_
|
||||
#define _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_PROTOCOLHANDLER_SCRIPTING_CONTEXT_HXX_
|
||||
|
||||
#include <hash_map>
|
||||
|
||||
#include <osl/mutex.hxx>
|
||||
#include <rtl/ustring>
|
||||
#include <cppuhelper/implbase1.hxx>
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/uno/RuntimeException.hpp>
|
||||
#include <com/sun/star/beans/XPropertySet.hpp>
|
||||
|
||||
namespace func_provider
|
||||
{
|
||||
|
||||
//Typedefs
|
||||
//=============================================================================
|
||||
typedef ::std::hash_map < ::rtl::OUString, ::com::sun::star::uno::Any,
|
||||
::rtl::OUStringHash, ::std::equal_to< ::rtl::OUString > >
|
||||
ScriptingConext_hash;
|
||||
typedef ::std::vector< ::rtl::OUString >
|
||||
OUString_vec;
|
||||
|
||||
class ScriptingContext : public ::cppu::WeakImplHelper1< ::com::sun::star::beans::XPropertySet >
|
||||
{
|
||||
private:
|
||||
// to obtain other services if needed
|
||||
ScriptingConext_hash m_propertyMap;
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
|
||||
|
||||
osl::Mutex m_mutex;
|
||||
|
||||
// Private helper methods
|
||||
bool validateKey( const ::rtl::OUString& key);
|
||||
|
||||
public:
|
||||
ScriptingContext( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & xContext );
|
||||
~ScriptingContext();
|
||||
|
||||
// XPropertySet implementation
|
||||
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
|
||||
};
|
||||
}// func_provider
|
||||
#endif //_DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_PROVIDER_XFUNCTIONPROVIDER_HXX_
|
3
scripting/source/provider/exports.dxp
Normal file
3
scripting/source/provider/exports.dxp
Normal file
@@ -0,0 +1,3 @@
|
||||
component_getImplementationEnvironment
|
||||
component_writeInfo
|
||||
component_getFactory
|
104
scripting/source/provider/makefile.mk
Normal file
104
scripting/source/provider/makefile.mk
Normal file
@@ -0,0 +1,104 @@
|
||||
#*************************************************************************
|
||||
#
|
||||
# $RCSfile: makefile.mk,v $
|
||||
#
|
||||
# $Revision: 1.1 $
|
||||
#
|
||||
# last change: $Author: dfoster $ $Date: 2002-09-20 14:33:24 $
|
||||
#
|
||||
# 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): _______________________________________
|
||||
#
|
||||
#
|
||||
#
|
||||
#*************************************************************************
|
||||
PRJ=..$/..
|
||||
|
||||
PRJNAME= scripting
|
||||
TARGET= provider
|
||||
USE_DEFFILE= TRUE
|
||||
NO_BSYMBOLIC= TRUE
|
||||
ENABLE_EXCEPTIONS=TRUE
|
||||
COMP1TYPELIST=$(TARGET)
|
||||
|
||||
# --- Settings -----------------------------------------------------
|
||||
|
||||
.INCLUDE : settings.mk
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
.INCLUDE : ..$/cppumaker.mk
|
||||
|
||||
SLOFILES=\
|
||||
$(SLO)$/ScriptingContext.obj\
|
||||
$(SLO)$/FunctionImpl.obj\
|
||||
$(SLO)$/FunctionProvider.obj\
|
||||
|
||||
SHL1TARGET= $(TARGET)
|
||||
|
||||
SHL1STDLIBS= \
|
||||
$(CPPULIB) \
|
||||
$(CPPUHELPERLIB) \
|
||||
$(SALLIB)
|
||||
|
||||
# If you want our own way of debug uncomment this flag...
|
||||
# ENVCFLAGS= -DDEBUG
|
||||
|
||||
SHL1DEPN=
|
||||
SHL1IMPLIB= i$(TARGET)
|
||||
SHL1LIBS= $(SLB)$/$(TARGET).lib
|
||||
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
|
||||
|
||||
DEF1NAME= $(SHL1TARGET)
|
||||
DEF1EXPORTFILE= exports.dxp
|
||||
|
||||
# --- Targets ------------------------------------------------------
|
||||
|
||||
.INCLUDE : target.mk
|
31
scripting/source/provider/provider.xml
Executable file
31
scripting/source/provider/provider.xml
Executable file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
|
||||
<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<module-name> ScriptRuntimeManager </module-name>
|
||||
<component-description>
|
||||
<author> Noel Power</author>
|
||||
<name> drafts.com.sun.star.script.framework.provider.FunctionProvider </name>
|
||||
<description>
|
||||
This component is part of the Scripting Framework
|
||||
</description>
|
||||
<loader-name> com.sun.star.loader.SharedLibrary </loader-name>
|
||||
<language> c++ </language>
|
||||
<status value="drafts"/>
|
||||
<supported-service> drafts.com.sun.star.script.framework.provider.FunctionProvider </supported-service>
|
||||
<type> com.sun.star.beans.XPropertySet </type>
|
||||
<type> com.sun.star.uno.Exception </type>
|
||||
<type> com.sun.star.io.IOException </type>
|
||||
<type> com.sun.star.io.XStream </type>
|
||||
<type> drafts.com.sun.star.script.framework.provider.XFunction </type>
|
||||
<type> drafts.com.sun.star.script.framework.provider.XFunctionProvider </type>
|
||||
<type> drafts.com.sun.star.script.framework.XScriptInvocation </type>
|
||||
<type> drafts.com.sun.star.script.framework.scripturi.XScriptURI </type>
|
||||
|
||||
</component-description>
|
||||
<project-build-dependency> cppuhelper </project-build-dependency>
|
||||
<project-build-dependency> cppu </project-build-dependency>
|
||||
<project-build-dependency> sal </project-build-dependency>
|
||||
<runtime-module-dependency> cppuhelper2$(COM) </runtime-module-dependency>
|
||||
<runtime-module-dependency> cppu2 </runtime-module-dependency>
|
||||
<runtime-module-dependency> sal2 </runtime-module-dependency>
|
||||
</module-description>
|
330
scripting/source/runtimemgr/ScriptNameResolverImpl.cxx
Normal file
330
scripting/source/runtimemgr/ScriptNameResolverImpl.cxx
Normal file
@@ -0,0 +1,330 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptNameResolverImpl.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:29 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <vector>
|
||||
|
||||
#include <cppuhelper/implementationentry.hxx>
|
||||
#include <util/util.hxx>
|
||||
#include <util/scriptingconstants.hxx>
|
||||
|
||||
#include "ScriptNameResolverImpl.hxx"
|
||||
#include "ScriptRuntimeManager.hxx"
|
||||
|
||||
using namespace ::rtl;
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::drafts::com::sun::star::script::framework;
|
||||
|
||||
namespace scripting_runtimemgr
|
||||
{
|
||||
|
||||
const sal_Char* const SERVICE_NAME="drafts.com.sun.star.script.framework.DefaultScriptNameResolver";
|
||||
const sal_Char* const IMPL_NAME="drafts.com.sun.star.script.framework.DefaultScriptNameResolver";
|
||||
const sal_Char* const LANGUAGE_TO_RESOLVE_ON="Java"; // should be configurable
|
||||
OUString nrs_implName = OUString::createFromAscii(IMPL_NAME);
|
||||
OUString nrs_serviceName = OUString::createFromAscii(SERVICE_NAME);
|
||||
Sequence< OUString > nrs_serviceNames = Sequence< OUString >( &nrs_serviceName, 1 );
|
||||
|
||||
const sal_Int16 SHARED_STORAGE_ID = 1; // should be in constants def file!!!!???? TBD
|
||||
const sal_Int16 USER_STORAGE_ID = 0;
|
||||
const sal_Int16 DOC_STORAGE_ID_NOT_SET = -1;
|
||||
extern ::rtl_StandardModuleCount s_moduleCount;
|
||||
|
||||
// define storages to search
|
||||
::std::vector< int > SEARCHSIDS;
|
||||
|
||||
//*************************************************************************
|
||||
ScriptNameResolverImpl::ScriptNameResolverImpl(const Reference< XComponentContext > & xContext ):m_xContext(xContext),mStorageFactory(xContext)
|
||||
{
|
||||
OSL_TRACE( "< ScriptNameResolverImpl ctor called >\n" );
|
||||
SEARCHSIDS.clear();
|
||||
SEARCHSIDS.push_back(DOC_STORAGE_ID_NOT_SET);
|
||||
SEARCHSIDS.push_back(USER_STORAGE_ID);
|
||||
SEARCHSIDS.push_back(SHARED_STORAGE_ID);
|
||||
|
||||
s_moduleCount.modCnt.acquire( &s_moduleCount.modCnt );
|
||||
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
ScriptNameResolverImpl::~ScriptNameResolverImpl()
|
||||
{
|
||||
OSL_TRACE( "< ScriptNameResolverImpl dtor called >\n" );
|
||||
s_moduleCount.modCnt.release( &s_moduleCount.modCnt );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Reference< scripturi::XScriptURI >
|
||||
ScriptNameResolverImpl::resolve(const Reference<scripturi::XScriptURI> & scriptURI, Any& invocationCtx)
|
||||
throw (lang::IllegalArgumentException, script::CannotConvertException, RuntimeException)
|
||||
{
|
||||
|
||||
Reference <scripturi::XScriptURI> resolvedName;
|
||||
Reference< beans::XPropertySet > xPropSetScriptingContext;
|
||||
OSL_TRACE( "ScriptNameResolverImpl::resolve: in resolve - start" );
|
||||
|
||||
if (sal_False == (invocationCtx >>= xPropSetScriptingContext))
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptNameResolverImpl::resolve : unable to get XScriptingContext from invocationCtx in/out param"), Reference<XInterface> ());
|
||||
}
|
||||
|
||||
Any any;
|
||||
OUString docUri;
|
||||
sal_Int16 docSid;
|
||||
try
|
||||
{
|
||||
any = xPropSetScriptingContext->getPropertyValue( scripting_constants::DOC_URI );
|
||||
OSL_TRACE( "ScriptNameResolverImpl::resolve: in resolve - got anyUri" );
|
||||
if ( sal_False == ( any >>= docUri ) )
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptNameResolverImpl::resolve : unable to get doc Uri from xPropSetScriptingContext"), Reference<XInterface> ());
|
||||
}
|
||||
any = xPropSetScriptingContext->getPropertyValue( scripting_constants::DOC_STORAGE_ID );
|
||||
if ( sal_False == ( any >>= docSid ) )
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptNameResolverImpl::resolve : unable to get doc storage id from xPropSetScriptingContext"), Reference<XInterface> ());
|
||||
}
|
||||
}
|
||||
catch (Exception & e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptNameResolverImpl::resolve : problem with getPropertyValue")+e.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptNameResolverImpl::resolve Unknown Exception caught - RuntimeException rethrown"), Reference<XInterface> ());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _DEBUG
|
||||
::rtl::OString docUriO(::rtl::OUStringToOString(docUri ,RTL_TEXTENCODING_ASCII_US));
|
||||
fprintf(stderr,"ScriptNameResolverImpl::resolve: *** >>> DOC URI: %s, doc sid is %d\n", docUriO.pData->buffer,docSid);
|
||||
#endif
|
||||
|
||||
|
||||
OSL_TRACE("ScriptNameResolverImpl::resolve Starting...");
|
||||
SEARCHSIDS[0] = docSid;
|
||||
::std::vector< int >::const_iterator iter;
|
||||
|
||||
|
||||
for ( iter = SEARCHSIDS.begin() ; iter != SEARCHSIDS.end(); ++iter)
|
||||
{
|
||||
try
|
||||
{
|
||||
OSL_TRACE("** about to resolve from storage using id %d from vector of size %d",*iter,SEARCHSIDS.size());
|
||||
if ( (resolvedName = resolveURIFromStorageID(*iter,scriptURI) ).is() )
|
||||
{
|
||||
OSL_TRACE("found match in uri from storage %d",*iter);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
catch (Exception & e)
|
||||
{
|
||||
OSL_TRACE("Exception thrown by storage %d, failed to match uri: %s",*iter,::rtl::OUStringToOString(e.Message,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
OSL_TRACE("unknown exception thrown by storage %d, failed to match uri",*iter);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
return resolvedName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL
|
||||
ScriptNameResolverImpl::getImplementationName( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return nrs_implName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
sal_Bool SAL_CALL
|
||||
ScriptNameResolverImpl::supportsService( const OUString& serviceName )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
OUString const * pNames = nrs_serviceNames.getConstArray();
|
||||
for ( sal_Int32 nPos = nrs_serviceNames.getLength(); nPos--; )
|
||||
{
|
||||
if (serviceName.equals( pNames[ nPos ] ))
|
||||
{
|
||||
return sal_True;
|
||||
}
|
||||
}
|
||||
return sal_False;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
Reference< scripturi::XScriptURI >
|
||||
ScriptNameResolverImpl::resolveURIFromStorageID(sal_Int16 sid, const Reference< scripturi::XScriptURI >& scriptURI) SAL_THROW ( (lang::IllegalArgumentException, RuntimeException) )
|
||||
{
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
::rtl::OString locationO(::rtl::OUStringToOString(scriptURI->getLocation(),RTL_TEXTENCODING_ASCII_US));
|
||||
::rtl::OString languageO(::rtl::OUStringToOString(scriptURI->getLanguage(),RTL_TEXTENCODING_ASCII_US));
|
||||
::rtl::OString functionName(::rtl::OUStringToOString(scriptURI->getFunctionName(),RTL_TEXTENCODING_ASCII_US));
|
||||
::rtl::OString logicalName(::rtl::OUStringToOString(scriptURI->getLogicalName(),RTL_TEXTENCODING_ASCII_US));
|
||||
fprintf(stderr,"trying to resolve URI, {location = %s}, {language = %s}, {funtionName = %s}, {logicalName = %s}\n", locationO.pData->buffer, languageO.pData->buffer,functionName.pData->buffer, logicalName.pData->buffer);
|
||||
#endif
|
||||
|
||||
Reference< scripturi::XScriptURI > resolvedName;
|
||||
if ( sid == DOC_STORAGE_ID_NOT_SET )
|
||||
{
|
||||
return resolvedName;
|
||||
|
||||
}
|
||||
try
|
||||
{
|
||||
Reference<storage::XScriptImplAccess> storage = mStorageFactory.getStorageInstance(sid);
|
||||
validateXRef(storage, "ScriptNameResolverImpl::resolveURIFromStorageID: cannot get XScriptImplAccess");
|
||||
Sequence< Reference< scripturi::XScriptURI > > results = storage->getImplementations(scriptURI);
|
||||
if ( !results.getLength() )
|
||||
{
|
||||
return resolvedName;
|
||||
}
|
||||
|
||||
OSL_TRACE("ScriptNameResolverImpl::resolve Got some results...");
|
||||
for(int index=0;index<results.getLength();index++)
|
||||
{
|
||||
Reference< scripturi::XScriptURI > uri = results[index];
|
||||
#ifdef _DEBUG
|
||||
|
||||
::rtl::OString locationO(::rtl::OUStringToOString(uri->getLocation(),RTL_TEXTENCODING_ASCII_US));
|
||||
::rtl::OString languageO(::rtl::OUStringToOString(uri->getLanguage(),RTL_TEXTENCODING_ASCII_US));
|
||||
::rtl::OString functionName(::rtl::OUStringToOString(uri->getFunctionName(),RTL_TEXTENCODING_ASCII_US));
|
||||
::rtl::OString logicalName(::rtl::OUStringToOString(uri->getLogicalName(),RTL_TEXTENCODING_ASCII_US));
|
||||
fprintf(stderr,"[%d] URI, {location = %s}, {language = %s}, {funtionName = %s}, {logicalName = %s}\n",
|
||||
index, locationO.pData->buffer, languageO.pData->buffer,functionName.pData->buffer, logicalName.pData->buffer);
|
||||
#endif
|
||||
|
||||
// just choose first one that has language=LANGUAGE_TO_RESOLVE_ON
|
||||
::rtl::OUString language(uri->getLanguage());
|
||||
|
||||
if (( language.compareToAscii(LANGUAGE_TO_RESOLVE_ON)== 0))
|
||||
{
|
||||
OSL_TRACE("Found desired language\n");
|
||||
resolvedName = uri;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (lang::IllegalArgumentException & iae)
|
||||
{
|
||||
throw lang::IllegalArgumentException(OUSTR("ScriptRuntimeManager::resolveURIFromStorageID IllegalArgumentException: ")+iae.Message,
|
||||
Reference<XInterface> (), iae.ArgumentPosition);
|
||||
}
|
||||
catch (RuntimeException & re)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptRuntimeManager::resolveURIFromStorageID RuntimeException: ")+re.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
catch (Exception & e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptNameResolverImpl::resolveURIFromStorageID : Unknown Exception caught - RuntimeException rethrown")+e.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptNameResolverImpl::resolveURIFromStorageID Unknown exception caught - RuntimeException rethrown"), Reference<XInterface> ());
|
||||
}
|
||||
#endif
|
||||
return resolvedName;
|
||||
}
|
||||
//*************************************************************************
|
||||
Sequence<OUString> SAL_CALL
|
||||
ScriptNameResolverImpl::getSupportedServiceNames( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return nrs_serviceNames;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Reference< XInterface > SAL_CALL scriptnri_create(
|
||||
Reference< XComponentContext > const & xComponentContext )
|
||||
SAL_THROW( (Exception) )
|
||||
{
|
||||
return (cppu::OWeakObject *)new ScriptNameResolverImpl( xComponentContext );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Sequence< OUString > scriptnri_getSupportedServiceNames() SAL_THROW( () )
|
||||
{
|
||||
return nrs_serviceNames;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString scriptnri_getImplementationName() SAL_THROW( () )
|
||||
{
|
||||
return nrs_implName;
|
||||
}
|
||||
} // namespace scripting_runtimemgr
|
127
scripting/source/runtimemgr/ScriptNameResolverImpl.hxx
Normal file
127
scripting/source/runtimemgr/ScriptNameResolverImpl.hxx
Normal file
@@ -0,0 +1,127 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptNameResolverImpl.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:30 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#ifndef _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_SCRIPTNAMERESOLVERIMPL_HXX_
|
||||
#define _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_SCRIPTNAMERESOLVERIMPL_HXX_
|
||||
|
||||
#include <cppuhelper/implbase1.hxx> // helper for XInterface, XTypeProvider etc.
|
||||
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/IllegalArgumentException.hpp>
|
||||
#include <com/sun/star/uno/RuntimeException.hpp>
|
||||
#include <com/sun/star/script/CannotConvertException.hpp>
|
||||
#include <com/sun/star/reflection/InvocationTargetException.hpp>
|
||||
|
||||
#include <drafts/com/sun/star/script/framework/XScriptNameResolver.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/scripturi/XScriptURI.hpp>
|
||||
|
||||
#include "StorageBridgeFactory.hxx"
|
||||
|
||||
namespace scripting_runtimemgr
|
||||
{
|
||||
|
||||
class ScriptNameResolverImpl : public ::cppu::WeakImplHelper1< ::drafts::com::sun::star::script::framework::XScriptNameResolver >
|
||||
{
|
||||
private:
|
||||
::com::sun::star::uno::Reference< ::drafts::com::sun::star::script::framework::scripturi::XScriptURI > resolveURIFromStorageID(sal_Int16 sid, const ::com::sun::star::uno::Reference< ::drafts::com::sun::star::script::framework::scripturi::XScriptURI >& nameToResolve) SAL_THROW ( ( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) );
|
||||
/**********************************************
|
||||
Reference< XComponentContext > m_xContext
|
||||
to obtain other services if needed
|
||||
*/
|
||||
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
|
||||
StorageBridgeFactory mStorageFactory;
|
||||
::osl::Mutex m_mutex;
|
||||
public:
|
||||
/**********************************************
|
||||
ScriptNameResolverImpl Constructor
|
||||
@param the current context
|
||||
*/
|
||||
ScriptNameResolverImpl(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext);
|
||||
~ScriptNameResolverImpl();
|
||||
|
||||
// XServiceInfo implementation
|
||||
virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
|
||||
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
|
||||
|
||||
/**********************************************
|
||||
resolve method
|
||||
@param scriptURI this is the given ScriptURI
|
||||
@param invocationCtx the invocation context contains the
|
||||
documentStorageID and document reference for use in script name
|
||||
resolving. On full name resolution it sets the resolvedScriptStorageID to
|
||||
the actual storage location of the fully resolved script. May or may not * be the same as the documentStorageID.
|
||||
@exception CannotResolveScriptNameException
|
||||
@exception IllegalArgumentException
|
||||
@exception NullPointerException
|
||||
@return the resolved XScriptURI
|
||||
*/
|
||||
::com::sun::star::uno::Reference< ::drafts::com::sun::star::script::framework::scripturi::XScriptURI > SAL_CALL
|
||||
resolve(const ::com::sun::star::uno::Reference< ::drafts::com::sun::star::script::framework::scripturi::XScriptURI > & scriptURI,
|
||||
::com::sun::star::uno::Any& invocationCtx)
|
||||
throw(::com::sun::star::script::CannotConvertException,
|
||||
::com::sun::star::lang::IllegalArgumentException,
|
||||
::com::sun::star::uno::RuntimeException);
|
||||
};
|
||||
}// scripting_runtimemgr
|
||||
|
||||
#endif //_DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_SCRIPTNAMERESOLVERIMPL_HXX_
|
372
scripting/source/runtimemgr/ScriptRuntimeManager.cxx
Executable file
372
scripting/source/runtimemgr/ScriptRuntimeManager.cxx
Executable file
@@ -0,0 +1,372 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptRuntimeManager.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:31 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cppuhelper/implementationentry.hxx>
|
||||
|
||||
#include "ScriptRuntimeManager.hxx"
|
||||
#include "ScriptNameResolverImpl.hxx"
|
||||
#include <util/util.hxx>
|
||||
|
||||
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
|
||||
{
|
||||
|
||||
static const sal_Char* const SERVICENAME="drafts.com.sun.star.script.framework.ScriptRuntimeManager";
|
||||
static const sal_Char* const IMPLNAME="drafts.com.sun.star.script.framework.ScriptRuntimeManager";
|
||||
|
||||
static OUString s_implName = ::rtl::OUString::createFromAscii(IMPLNAME);
|
||||
static OUString s_serviceName = ::rtl::OUString::createFromAscii(SERVICENAME);
|
||||
static Sequence< OUString > s_serviceNames = Sequence< OUString >( &s_serviceName, 1 );
|
||||
|
||||
::rtl_StandardModuleCount s_moduleCount = MODULE_COUNT_INIT;
|
||||
|
||||
//*************************************************************************
|
||||
// ScriptRuntimeManager Constructor
|
||||
ScriptRuntimeManager::ScriptRuntimeManager(const Reference< XComponentContext > & xContext)
|
||||
: m_xContext( xContext )
|
||||
{
|
||||
OSL_TRACE( "< ScriptRuntimeManager ctor called >\n" );
|
||||
s_moduleCount.modCnt.acquire( &s_moduleCount.modCnt );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// ScriptRuntimeManager Destructor
|
||||
ScriptRuntimeManager::~ScriptRuntimeManager()
|
||||
{
|
||||
OSL_TRACE( "< ScriptRuntimeManager dtor called >\n" );
|
||||
s_moduleCount.modCnt.release( &s_moduleCount.modCnt );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// Get the proper XScriptInvocation
|
||||
Reference <XScriptInvocation> SAL_CALL ScriptRuntimeManager::getScriptRuntime(const Reference<scripturi::XScriptURI>& scriptURI)
|
||||
throw(RuntimeException)
|
||||
{
|
||||
OSL_TRACE("** ==> ScriptRuntimeManager in getScriptRuntime\n");
|
||||
|
||||
Reference< XScriptInvocation > xScriptInvocation;
|
||||
|
||||
validateXRef(m_xContext, "ScriptRuntimeManager::GetScriptRuntime: No context available");
|
||||
Reference< lang::XMultiComponentFactory > xMgr = m_xContext->getServiceManager();
|
||||
validateXRef(xMgr, "ScriptRuntimeManager::GetScriptRuntime: No service manager available");
|
||||
|
||||
try
|
||||
{
|
||||
Reference< XInterface > xx;
|
||||
Any a = m_xContext->getValueByName(OUString::createFromAscii("/singletons/drafts.com.sun.star.script.framework.theScriptRuntimeForJava"));
|
||||
a >>= xx;
|
||||
validateXRef(xx, "ScriptRuntimeManager::GetScriptRuntime: cannot get ScriptRuntimeForJava Service");
|
||||
xScriptInvocation = Reference<XScriptInvocation>(xx, UNO_QUERY_THROW);
|
||||
}
|
||||
catch (Exception &e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptRuntimeManager::GetScriptRuntime: ") + e.Message, Reference< XInterface >());
|
||||
}
|
||||
|
||||
return xScriptInvocation;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// Get the proper XScriptNameResolver
|
||||
Reference <XScriptNameResolver> SAL_CALL
|
||||
ScriptRuntimeManager::getScriptNameResolver()
|
||||
throw(RuntimeException)
|
||||
{
|
||||
OSL_TRACE("** ==> ScriptRuntimeManager in getScriptNameResolver\n");
|
||||
Reference< XScriptNameResolver > xScriptNameResolver;
|
||||
|
||||
validateXRef(m_xContext, "ScriptRuntimeManager::GetScriptNameResolver: No context available");
|
||||
Reference< lang::XMultiComponentFactory > xMgr = m_xContext->getServiceManager();
|
||||
validateXRef(xMgr, "ScriptRuntimeManager::GetScriptRuntime: No Service Manager available");
|
||||
|
||||
try
|
||||
{
|
||||
Reference< XInterface > xx = xMgr->createInstanceWithContext(OUString::createFromAscii("drafts.com.sun.star.script.framework.DefaultScriptNameResolver"),m_xContext );
|
||||
validateXRef(xx, "ScriptRuntimeManager::GetScriptRuntime: cannot get instance of DefaultScriptNameResolver" );
|
||||
xScriptNameResolver = Reference<XScriptNameResolver>(xx, UNO_QUERY_THROW);
|
||||
}
|
||||
catch (Exception &e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptRuntimeManager::GetScriptNameResolver: ") + e.Message, Reference< XInterface >());
|
||||
}
|
||||
return xScriptNameResolver;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// XScriptInvocation implementation
|
||||
Any SAL_CALL ScriptRuntimeManager::invoke(
|
||||
const Reference < scripturi::XScriptURI > & scriptURI,
|
||||
const Any& invocationCtx, const Sequence< Any >& aParams, Sequence< sal_Int16 >& aOutParamIndex, Sequence< Any >& aOutParam ) throw (lang::IllegalArgumentException, script::CannotConvertException, reflection::InvocationTargetException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("** ==> ScriptRuntimeManager in runtimemgr invoke\n");
|
||||
Any results;
|
||||
// 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;
|
||||
try
|
||||
{
|
||||
Reference< scripturi::XScriptURI > resolvedURI = resolve(scriptURI, resolvedCtx);
|
||||
validateXRef(resolvedURI, "ScriptRuntimeManager::invoke: No resolvedURI" );
|
||||
|
||||
Reference< XScriptInvocation > xScriptInvocation = getScriptRuntime(resolvedURI);
|
||||
validateXRef(xScriptInvocation, "ScriptRuntimeManager::invoke: cannot get instance of language specific runtime.");
|
||||
|
||||
|
||||
results = xScriptInvocation->invoke(resolvedURI,resolvedCtx,aParams,
|
||||
aOutParamIndex,aOutParam);
|
||||
}
|
||||
catch (lang::IllegalArgumentException & iae)
|
||||
{
|
||||
throw lang::IllegalArgumentException(OUSTR("ScriptRuntimeManager::invoke IllegalArgumentException: ")+iae.Message,
|
||||
Reference<XInterface> (), iae.ArgumentPosition);
|
||||
}
|
||||
catch (script::CannotConvertException & cce)
|
||||
{
|
||||
throw script::CannotConvertException(OUSTR("ScriptRuntimeManager::invoke CannotConvertException: ")+cce.Message,
|
||||
Reference<XInterface> (), cce.DestinationTypeClass, cce.Reason, cce.ArgumentIndex);
|
||||
}
|
||||
catch (reflection::InvocationTargetException & ite)
|
||||
{
|
||||
throw reflection::InvocationTargetException(OUSTR("ScriptRuntimeManager::invoke InvocationTargetException: ")+ite.Message,
|
||||
Reference<XInterface> (), ite.TargetException);
|
||||
}
|
||||
catch (RuntimeException & re)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptRuntimeManager::invoke RuntimeException: ")+re.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptRuntimeManager::invoke UnknownException: "),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#endif
|
||||
return results;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// XScriptNameResolver implementation
|
||||
Reference<scripturi::XScriptURI> SAL_CALL ScriptRuntimeManager::resolve(const Reference<scripturi::XScriptURI>& scriptURI,Any& invocationCtx)
|
||||
throw(lang::IllegalArgumentException, script::CannotConvertException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("** ==> ScriptRuntimeManager in resolve\n");
|
||||
Reference< scripturi::XScriptURI > resolvedURI;
|
||||
|
||||
Reference< XScriptNameResolver > xScriptNameResolver = getScriptNameResolver();
|
||||
validateXRef(xScriptNameResolver, "ScriptRuntimeManager::resolve: No ScriptNameResolver");
|
||||
|
||||
try
|
||||
{
|
||||
resolvedURI = xScriptNameResolver->resolve(scriptURI,invocationCtx);
|
||||
}
|
||||
catch (lang::IllegalArgumentException & iae)
|
||||
{
|
||||
throw lang::IllegalArgumentException(OUSTR("ScriptRuntimeManager::resolve IllegalArgumentException: ")+iae.Message,
|
||||
Reference<XInterface> (), iae.ArgumentPosition);
|
||||
}
|
||||
catch (script::CannotConvertException & cce)
|
||||
{
|
||||
throw script::CannotConvertException(OUSTR("ScriptRuntimeManager::resolve CannotConvertException: ")+cce.Message,
|
||||
Reference<XInterface> (), cce.DestinationTypeClass, cce.Reason, cce.ArgumentIndex);
|
||||
}
|
||||
catch (RuntimeException & re)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptRuntimeManager::resolve RuntimeException: ")+re.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptRuntimeManager::resolve UnknownException: "),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#endif
|
||||
|
||||
return resolvedURI;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptRuntimeManager::getImplementationName( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return s_implName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
sal_Bool SAL_CALL ScriptRuntimeManager::supportsService( const OUString& serviceName )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
OUString const * pNames = s_serviceNames.getConstArray();
|
||||
for ( sal_Int32 nPos = s_serviceNames.getLength(); nPos--; )
|
||||
{
|
||||
if (serviceName.equals( pNames[ nPos ] ))
|
||||
{
|
||||
return sal_True;
|
||||
}
|
||||
}
|
||||
return sal_False;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Sequence<OUString> SAL_CALL ScriptRuntimeManager::getSupportedServiceNames( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return s_serviceNames;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
static Reference<XInterface> SAL_CALL srm_create(
|
||||
const Reference< XComponentContext > & xCompC )
|
||||
{
|
||||
return (cppu::OWeakObject *)new ScriptRuntimeManager( xCompC );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
static Sequence<OUString> srm_getSupportedServiceNames( )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
return s_serviceNames;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
static OUString srm_getImplementationName( )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
return s_implName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Reference< XInterface > SAL_CALL scriptnri_create(
|
||||
Reference< XComponentContext > const & xComponentContext )
|
||||
SAL_THROW( (Exception) );
|
||||
|
||||
//*************************************************************************
|
||||
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
|
||||
|
||||
//##################################################################################################
|
||||
//#### EXPORTED ####################################################################################
|
||||
//##################################################################################################
|
||||
|
||||
/**
|
||||
* Gives the environment this component belongs to.
|
||||
*/
|
||||
extern "C"
|
||||
{
|
||||
void SAL_CALL component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv)
|
||||
{
|
||||
*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
|
||||
*/
|
||||
sal_Bool SAL_CALL component_writeInfo(lang::XMultiServiceFactory * pServiceManager, registry::XRegistryKey * pRegistryKey)
|
||||
{
|
||||
return ::cppu::component_writeInfoHelper(pServiceManager, pRegistryKey, ::scripting_runtimemgr::s_entries);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @param pRegistryKey the registry key for this component, need for persistent data
|
||||
* @return a component factory
|
||||
*/
|
||||
void * SAL_CALL component_getFactory(const sal_Char * pImplName, lang::XMultiServiceFactory * pServiceManager, registry::XRegistryKey * pRegistryKey)
|
||||
{
|
||||
return ::cppu::component_getFactoryHelper(pImplName, pServiceManager, pRegistryKey, ::scripting_runtimemgr::s_entries);
|
||||
}
|
||||
}
|
159
scripting/source/runtimemgr/ScriptRuntimeManager.hxx
Normal file
159
scripting/source/runtimemgr/ScriptRuntimeManager.hxx
Normal file
@@ -0,0 +1,159 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptRuntimeManager.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:32 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
|
||||
#ifndef _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_SCRIPTRUNTIMEMANAGER_HXX_
|
||||
#define _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_SCRIPTRUNTIMEMANAGER_HXX_
|
||||
|
||||
#include <osl/mutex.hxx>
|
||||
|
||||
#include <cppuhelper/implbase3.hxx>
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
|
||||
#include <com/sun/star/lang/IllegalArgumentException.hpp>
|
||||
#include <com/sun/star/uno/RuntimeException.hpp>
|
||||
#include <com/sun/star/script/CannotConvertException.hpp>
|
||||
#include <com/sun/star/reflection/InvocationTargetException.hpp>
|
||||
|
||||
#include <drafts/com/sun/star/script/framework/XScriptInvocation.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/XScriptNameResolver.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/scripturi/XScriptURI.hpp>
|
||||
|
||||
namespace scripting_runtimemgr
|
||||
{
|
||||
/**
|
||||
* Class responsible for managing the various ScriptRuntime implementations.
|
||||
*/
|
||||
class ScriptRuntimeManager : public ::cppu::WeakImplHelper3< ::drafts::com::sun::star::script::framework::XScriptInvocation, ::com::sun::star::lang::XServiceInfo, ::drafts::com::sun::star::script::framework::XScriptNameResolver >
|
||||
{
|
||||
// to obtain other services if needed
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
|
||||
::osl::Mutex m_mutex;
|
||||
public:
|
||||
ScriptRuntimeManager( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & xContext );
|
||||
~ScriptRuntimeManager();
|
||||
|
||||
|
||||
// XServiceInfo implementation
|
||||
virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
|
||||
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
|
||||
|
||||
/**
|
||||
* implements XScriptInvocation, invokes the script named in scriptURI
|
||||
* (resolving it first, if necessary), with the args passed.
|
||||
*
|
||||
* @param scriptURI the URI, which may not be fully qualified, for the
|
||||
* script to be invoked
|
||||
*
|
||||
/*************************************************************
|
||||
Invoke
|
||||
@param scriptUri script uri describing the script
|
||||
@param invocationCtx
|
||||
the invocation context contains the documentStorageID and document reference for use in script name resolving
|
||||
|
||||
@param aParams all parameters; pure, out params are undefined in sequence,
|
||||
i.e., the value has to be ignored by the callee
|
||||
@param aOutParamIndex out indices
|
||||
@param aOutParam out parameters
|
||||
|
||||
@returns
|
||||
the value returned from the function being invoked
|
||||
|
||||
@throws IllegalArgumentException
|
||||
if there is no matching script name
|
||||
|
||||
@throws CannotConvertException
|
||||
if args do not match or cannot be converted the those
|
||||
of the invokee
|
||||
|
||||
@throws InvocationTargetException
|
||||
if the running script throws an exception this information is captured and rethrown as this exception type.
|
||||
|
||||
*/
|
||||
virtual ::com::sun::star::uno::Any SAL_CALL invoke(
|
||||
const ::com::sun::star::uno::Reference < ::drafts::com::sun::star::script::framework::scripturi::XScriptURI > & scriptUri,
|
||||
const ::com::sun::star::uno::Any& invocationCtx, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams, ::com::sun::star::uno::Sequence< sal_Int16 >& aOutParamIndex, ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::script::CannotConvertException, ::com::sun::star::reflection::InvocationTargetException, ::com::sun::star::uno::RuntimeException);
|
||||
|
||||
/**
|
||||
* implements XScriptNameResolver, attempts to resolve the script URI
|
||||
* passed in
|
||||
*
|
||||
* @param scriptURI the URI to be resolved
|
||||
* @param invocationCtx the invocation context contains the
|
||||
* documentStorageID and document reference for use in script name
|
||||
* resolving. On full name resolution it sets the resolvedScriptStorageID to
|
||||
* the actual storage location of the fully resolved script. May or may not * be the same as the documentStorageID.
|
||||
* @return the resolved URI
|
||||
*/
|
||||
virtual ::com::sun::star::uno::Reference < ::drafts::com::sun::star::script::framework::scripturi::XScriptURI > SAL_CALL
|
||||
resolve( const ::com::sun::star::uno::Reference < ::drafts::com::sun::star::script::framework::scripturi::XScriptURI >& scriptUri ,::com::sun::star::uno::Any& invocationCtx)
|
||||
throw(::com::sun::star::lang::IllegalArgumentException,
|
||||
::com::sun::star::script::CannotConvertException,
|
||||
::com::sun::star::uno::RuntimeException);
|
||||
|
||||
private:
|
||||
::com::sun::star::uno::Reference < ::drafts::com::sun::star::script::framework::XScriptInvocation > SAL_CALL getScriptRuntime(const ::com::sun::star::uno::Reference < ::drafts::com::sun::star::script::framework::scripturi::XScriptURI > & scriptUri) throw( ::com::sun::star::uno::RuntimeException);
|
||||
::com::sun::star::uno::Reference < ::drafts::com::sun::star::script::framework::XScriptNameResolver > SAL_CALL getScriptNameResolver() throw( ::com::sun::star::uno::RuntimeException);
|
||||
};
|
||||
} // scripting_runtimemgr
|
||||
|
||||
#endif //_COM_SUN_STAR_SCRIPTING_SCRIPTRUNTIMEMANAGER_HXX_
|
152
scripting/source/runtimemgr/StorageBridge.cxx
Normal file
152
scripting/source/runtimemgr/StorageBridge.cxx
Normal file
@@ -0,0 +1,152 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: StorageBridge.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:32 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <osl/diagnose.h>
|
||||
|
||||
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptStorageManager.hpp>
|
||||
|
||||
#include "StorageBridge.hxx"
|
||||
#include <util/util.hxx>
|
||||
|
||||
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
|
||||
{
|
||||
|
||||
const char* const SCRIPTIMPLACCESS_SERVICE = "drafts.com.sun.star.script.framework.storage.StorageProxy";
|
||||
const char* const SCRIPTSTORAGEMANAGER_SERVICE = "/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager";
|
||||
const int STORAGEID = 0;
|
||||
const int STORAGEPROXY = 0;
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
// StorageBridge Constructor
|
||||
StorageBridge::StorageBridge( const Reference< XComponentContext >& xContext, sal_Int16 sid ):m_xContext(xContext),m_sid(sid)
|
||||
{
|
||||
try
|
||||
{
|
||||
initStorage();
|
||||
}
|
||||
catch(RuntimeException& re)
|
||||
{
|
||||
throw RuntimeException(OUSTR("StorageBridge::StorageBridge(salIn32&): ") + re.Message, Reference< XInterface >());
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void
|
||||
StorageBridge::initStorage() throw (::com::sun::star::uno::RuntimeException)
|
||||
{
|
||||
try
|
||||
{
|
||||
Reference< lang::XMultiComponentFactory > xMultiComFac = m_xContext->getServiceManager();
|
||||
validateXRef(xMultiComFac, "StorageBridge::StorageBridge: cannot get multicomponentfactory from multiservice factory");
|
||||
Reference< XInterface > temp;
|
||||
|
||||
if(STORAGEPROXY)
|
||||
{
|
||||
temp = xMultiComFac->createInstanceWithContext(OUString::createFromAscii(SCRIPTIMPLACCESS_SERVICE),m_xContext);
|
||||
validateXRef(temp, "StorageBridge::StorageBridge: cannot get Storage service");
|
||||
m_xScriptImplAccess = Reference< storage::XScriptImplAccess > (temp, UNO_QUERY_THROW);
|
||||
}
|
||||
else
|
||||
{
|
||||
Any a = m_xContext->getValueByName(OUString::createFromAscii(SCRIPTSTORAGEMANAGER_SERVICE));
|
||||
a >>= temp;
|
||||
validateXRef(temp, "StorageBridge::StorageBridge: cannot get Storage service");
|
||||
Reference < storage::XScriptStorageManager > xScriptStorageManager = Reference< storage::XScriptStorageManager > (temp, UNO_QUERY_THROW);
|
||||
validateXRef(xScriptStorageManager, "StorageBridge::StorageBridge: cannot get Script Storage Manager service");
|
||||
Reference < XInterface > xScriptStorage = xScriptStorageManager->getScriptStorage(m_sid);
|
||||
validateXRef(xScriptStorage, "StorageBridge::StorageBridge: cannot get Script Storage service");
|
||||
m_xScriptImplAccess = Reference< storage::XScriptImplAccess > (xScriptStorage, UNO_QUERY_THROW);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("StorageBridge::StorageBridge: ") + e.Message, Reference< XInterface >());
|
||||
}
|
||||
}
|
||||
//*************************************************************************
|
||||
Sequence < Reference< scripturi::XScriptURI > >
|
||||
StorageBridge::getImplementations(const Reference< scripturi::XScriptURI >& queryURI )
|
||||
throw (lang::IllegalArgumentException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("In StorageBridge getImplementations...\n");
|
||||
Sequence < Reference< scripturi::XScriptURI > > results;
|
||||
try
|
||||
{
|
||||
results = m_xScriptImplAccess->getImplementations(queryURI);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("StorageBridge::getImplementations: ") + e.Message, Reference< XInterface >());
|
||||
}
|
||||
return results;
|
||||
}
|
||||
}
|
89
scripting/source/runtimemgr/StorageBridge.hxx
Normal file
89
scripting/source/runtimemgr/StorageBridge.hxx
Normal file
@@ -0,0 +1,89 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: StorageBridge.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:33 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
|
||||
#ifndef _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_STORAGEBRIDGE_HXX_
|
||||
#define _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_STORAGEBRIDGE_HXX_
|
||||
|
||||
#include <cppuhelper/implbase1.hxx>
|
||||
#include <com/sun/star/uno/XComponentContext.hpp>
|
||||
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptImplAccess.hpp>
|
||||
#include "StorageBridgeFactory.hxx"
|
||||
|
||||
namespace scripting_runtimemgr
|
||||
{
|
||||
class StorageBridge : public ::cppu::WeakImplHelper1< ::drafts::com::sun::star::script::framework::storage::XScriptImplAccess >
|
||||
{
|
||||
friend class StorageBridgeFactory;
|
||||
public:
|
||||
virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::drafts::com::sun::star::script::framework::scripturi::XScriptURI > > SAL_CALL getImplementations( const ::com::sun::star::uno::Reference< ::drafts::com::sun::star::script::framework::scripturi::XScriptURI >& queryURI ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
|
||||
private:
|
||||
StorageBridge(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext, sal_Int16 sid );
|
||||
|
||||
void initStorage() throw (::com::sun::star::uno::RuntimeException);
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
|
||||
::com::sun::star::uno::Reference< ::drafts::com::sun::star::script::framework::storage::XScriptImplAccess > m_xScriptImplAccess;
|
||||
sal_Int16 m_sid;
|
||||
};
|
||||
}
|
||||
|
||||
#endif //_COM_SUN_STAR_SCRIPTING_STORAGEBRIDGE_HXX_
|
99
scripting/source/runtimemgr/StorageBridgeFactory.cxx
Normal file
99
scripting/source/runtimemgr/StorageBridgeFactory.cxx
Normal file
@@ -0,0 +1,99 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: StorageBridgeFactory.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:34 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
|
||||
#include "StorageBridgeFactory.hxx"
|
||||
|
||||
#include "StorageBridge.hxx"
|
||||
|
||||
|
||||
using namespace ::drafts::com::sun::star::script::framework;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::com::sun::star;
|
||||
|
||||
|
||||
namespace scripting_runtimemgr
|
||||
{
|
||||
|
||||
//*************************************************************************
|
||||
StorageBridgeFactory::StorageBridgeFactory( const Reference< XComponentContext >& xContext ):
|
||||
m_xContext(xContext)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
// StorageBridge is a bridge between us an storage, the StorageBridge implements the XScriptImplAccess
|
||||
// interface, it allows both the "real" storage and a java test storage component to be configured.
|
||||
// @param location contains a url for the document.
|
||||
// @returns a storage instance for the location "location".
|
||||
// @see StorageBridge.cxx for flag "STORAGEPROXY", set to use java "test" component or use "real" storage.
|
||||
|
||||
|
||||
Reference< storage::XScriptImplAccess >
|
||||
StorageBridgeFactory::getStorageInstance(sal_Int16 sid)
|
||||
{
|
||||
|
||||
Reference <storage::XScriptImplAccess> storage = new StorageBridge(m_xContext,sid) ;
|
||||
return storage;
|
||||
}
|
||||
} //scripting_runtimemgr
|
86
scripting/source/runtimemgr/StorageBridgeFactory.hxx
Normal file
86
scripting/source/runtimemgr/StorageBridgeFactory.hxx
Normal file
@@ -0,0 +1,86 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: StorageBridgeFactory.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:34 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
|
||||
#ifndef _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_STORAGEBRIDGEFACTORY_HXX_
|
||||
#define _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_STORAGEBRIDGEFACTORY_HXX_
|
||||
|
||||
#include <rtl/ustring>
|
||||
|
||||
#include <com/sun/star/uno/XComponentContext.hpp>
|
||||
#include <com/sun/star/uno/Reference.hxx>
|
||||
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptImplAccess.hpp>
|
||||
|
||||
namespace scripting_runtimemgr
|
||||
{
|
||||
class StorageBridgeFactory
|
||||
{
|
||||
|
||||
public:
|
||||
StorageBridgeFactory(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext );
|
||||
::com::sun::star::uno::Reference< ::drafts::com::sun::star::script::framework::storage::XScriptImplAccess > getStorageInstance(sal_Int16 sid);
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
|
||||
private:
|
||||
StorageBridgeFactory();// No definition for default ctor
|
||||
};
|
||||
}// scripting_runtimemgr
|
||||
#endif //_DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_NAMERESOLVER_HXX_
|
4
scripting/source/runtimemgr/exports.dxp
Normal file
4
scripting/source/runtimemgr/exports.dxp
Normal file
@@ -0,0 +1,4 @@
|
||||
component_getDescriptionFunc
|
||||
component_getImplementationEnvironment
|
||||
component_writeInfo
|
||||
component_getFactory
|
102
scripting/source/runtimemgr/makefile.mk
Normal file
102
scripting/source/runtimemgr/makefile.mk
Normal file
@@ -0,0 +1,102 @@
|
||||
#*************************************************************************
|
||||
#
|
||||
# $RCSfile: makefile.mk,v $
|
||||
#
|
||||
# $Revision: 1.1 $
|
||||
#
|
||||
# last change: $Author: dfoster $ $Date: 2002-09-20 14:33:36 $
|
||||
#
|
||||
# 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): _______________________________________
|
||||
#
|
||||
#
|
||||
#
|
||||
#*************************************************************************
|
||||
PRJ=..$/..
|
||||
|
||||
PRJNAME= scripting
|
||||
TARGET= runtimemgr
|
||||
USE_DEFFILE= TRUE
|
||||
NO_BSYMBOLIC= TRUE
|
||||
ENABLE_EXCEPTIONS=TRUE
|
||||
COMP1TYPELIST=$(TARGET)
|
||||
|
||||
# --- Settings -----------------------------------------------------
|
||||
|
||||
.INCLUDE : settings.mk
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
.INCLUDE : ..$/cppumaker.mk
|
||||
|
||||
SLOFILES=\
|
||||
$(SLO)$/ScriptNameResolverImpl.obj\
|
||||
$(SLO)$/ScriptRuntimeManager.obj\
|
||||
$(SLO)$/StorageBridge.obj\
|
||||
$(SLO)$/StorageBridgeFactory.obj\
|
||||
|
||||
SHL1TARGET= $(TARGET)
|
||||
|
||||
SHL1STDLIBS= \
|
||||
$(CPPULIB) \
|
||||
$(CPPUHELPERLIB) \
|
||||
$(SALLIB)
|
||||
|
||||
SHL1DEPN=
|
||||
SHL1IMPLIB= i$(TARGET)
|
||||
SHL1LIBS= $(SLB)$/$(TARGET).lib
|
||||
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
|
||||
|
||||
DEF1NAME= $(SHL1TARGET)
|
||||
DEF1EXPORTFILE= exports.dxp
|
||||
|
||||
# --- Targets ------------------------------------------------------
|
||||
|
||||
.INCLUDE : target.mk
|
47
scripting/source/runtimemgr/runtimemgr.xml
Executable file
47
scripting/source/runtimemgr/runtimemgr.xml
Executable file
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
|
||||
<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<module-name> ScriptRuntimeManager </module-name>
|
||||
<component-description>
|
||||
<author> Alexis Ledoux</author>
|
||||
<name> drafts.com.sun.star.script.framework.ScriptRuntimeManager </name>
|
||||
<description>
|
||||
This component is part of the Scripting Framework
|
||||
</description>
|
||||
<loader-name> com.sun.star.loader.SharedLibrary </loader-name>
|
||||
<language> c++ </language>
|
||||
<status value="final"/>
|
||||
<supported-service> drafts.com.sun.star.script.framework.ScriptRuntimeManager </supported-service>
|
||||
<type> com.sun.star.lang.XSingleServiceFactory </type>
|
||||
<type> com.sun.star.lang.XMultiComponentFactory </type>
|
||||
<type> com.sun.star.lang.XSingleComponentFactory </type>
|
||||
<type> com.sun.star.uno.XNamingService </type>
|
||||
<type> com.sun.star.uno.XWeak </type>
|
||||
<type> com.sun.star.lang.XMain </type>
|
||||
<type> com.sun.star.uno.XAggregation </type>
|
||||
<type> com.sun.star.lang.XMultiServiceFactory </type>
|
||||
<type> com.sun.star.lang.XTypeProvider </type>
|
||||
<type> com.sun.star.registry.XSimpleRegistry </type>
|
||||
<type> com.sun.star.loader.XImplementationLoader </type>
|
||||
<type> com.sun.star.registry.XImplementationRegistration </type>
|
||||
<type> com.sun.star.lang.XComponent </type>
|
||||
<type> com.sun.star.connection.XAcceptor </type>
|
||||
<type> com.sun.star.connection.XConnector </type>
|
||||
<type> com.sun.star.container.XHierarchicalNameAccess </type>
|
||||
<type> com.sun.star.lang.XServiceInfo </type>
|
||||
<type> com.sun.star.io.XOutputStream </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XScriptImplAccess </type>
|
||||
<type> drafts.com.sun.star.script.framework.XScriptInvocation </type>
|
||||
<type> drafts.com.sun.star.script.framework.XScriptNameResolver </type>
|
||||
<type> drafts.com.sun.star.script.framework.scripturi.XScriptURI </type>
|
||||
</component-description>
|
||||
<project-build-dependency> cppuhelper </project-build-dependency>
|
||||
<project-build-dependency> cppu </project-build-dependency>
|
||||
<project-build-dependency> sal </project-build-dependency>
|
||||
<runtime-module-dependency> cppuhelper$(UDK_MAJOR)$(COM) </runtime-module-dependency>
|
||||
<runtime-module-dependency> salhelper$(UDK_MAJOR)$(COM) </runtime-module-dependency>
|
||||
<runtime-module-dependency> cppu$(UDK_MAJOR) </runtime-module-dependency>
|
||||
<runtime-module-dependency> reg$(UDK_MAJOR) </runtime-module-dependency>
|
||||
<runtime-module-dependency> store$(UDK_MAJOR) </runtime-module-dependency>
|
||||
<runtime-module-dependency> sal$(UDK_MAJOR) </runtime-module-dependency>
|
||||
</module-description>
|
159
scripting/source/storage/ScriptElement.cxx
Normal file
159
scripting/source/storage/ScriptElement.cxx
Normal file
@@ -0,0 +1,159 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptElement.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:48 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include "ScriptElement.hxx"
|
||||
#include <util/util.hxx>
|
||||
|
||||
using namespace ::rtl;
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::drafts::com::sun::star::script::framework;
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
//*************************************************************************
|
||||
ScriptElement::ScriptElement(storage::ScriptImplInfo & sII) :
|
||||
m_sII( sII ),
|
||||
XMLElement(OUSTR("script"))
|
||||
{
|
||||
OSL_TRACE("ScriptElement ctor called\n");
|
||||
|
||||
addAttribute(OUSTR("language"), sII.scriptLanguage);
|
||||
addAttribute(OUSTR("deploymentdir"), sII.scriptRoot);
|
||||
|
||||
{
|
||||
XMLElement* xel = new XMLElement(OUSTR("logicalname"));
|
||||
xel->addAttribute(OUSTR("value"), sII.logicalName);
|
||||
Reference <xml::sax::XAttributeList> xal(xel);
|
||||
addSubElement(xal);
|
||||
}
|
||||
|
||||
{
|
||||
XMLElement* xel = new XMLElement(OUSTR("languagename"));
|
||||
xel->addAttribute(OUSTR("value"), sII.functionName);
|
||||
xel->addAttribute(OUSTR("location"), sII.scriptLocation);
|
||||
Reference <xml::sax::XAttributeList> xal(xel);
|
||||
addSubElement(xal);
|
||||
}
|
||||
|
||||
storage::ScriptDepFile *pArray = sII.scriptDependencies.getArray();
|
||||
sal_Int32 len = sII.scriptDependencies.getLength();
|
||||
|
||||
if (len > 0)
|
||||
{
|
||||
XMLElement* xel = new XMLElement(OUSTR("dependencies"));
|
||||
|
||||
for(sal_Int32 i = 0; i < len; i++)
|
||||
{
|
||||
XMLElement* subxel = new XMLElement(OUSTR("dependfile"));
|
||||
subxel->addAttribute(OUSTR("name"), pArray[i].fileName);
|
||||
if(pArray[i].isDeliverable)
|
||||
{
|
||||
subxel->addAttribute(OUSTR("isdeliverable"), OUSTR("yes"));
|
||||
}
|
||||
else
|
||||
{
|
||||
subxel->addAttribute(OUSTR("isdeliverable"), OUSTR("no"));
|
||||
}
|
||||
Reference <xml::sax::XAttributeList> subxal(subxel);
|
||||
xel->addSubElement(subxal);
|
||||
}
|
||||
|
||||
Reference <xml::sax::XAttributeList> xal(xel);
|
||||
addSubElement(xal);
|
||||
}
|
||||
|
||||
if(sII.scriptDescription.getLength() > 0)
|
||||
{
|
||||
XMLElement* xel = new XMLElement(OUSTR("description"),
|
||||
sII.scriptDescription);
|
||||
Reference< xml::sax::XAttributeList > xal(xel);
|
||||
addSubElement(xal);
|
||||
}
|
||||
|
||||
storage::ScriptDeliverFile *pt_Array = sII.parcelDelivers.getArray();
|
||||
sal_Int32 len_d = sII.parcelDelivers.getLength();
|
||||
|
||||
if(len_d > 0)
|
||||
{
|
||||
XMLElement* xel = new XMLElement(OUSTR("delivery"));
|
||||
|
||||
for(sal_Int32 i = 0; i < len_d; i++)
|
||||
{
|
||||
XMLElement* subxel = new XMLElement(OUSTR("deliverfile"));
|
||||
subxel->addAttribute(OUSTR("name"), pt_Array[i].fileName);
|
||||
subxel->addAttribute(OUSTR("type"), pt_Array[i].fileType);
|
||||
Reference < xml::sax::XAttributeList > subxal(subxel);
|
||||
xel->addSubElement(subxal);
|
||||
}
|
||||
|
||||
Reference <xml::sax::XAttributeList> xal(xel);
|
||||
addSubElement(xal);
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
ScriptElement::~ScriptElement() SAL_THROW(())
|
||||
{
|
||||
}
|
||||
|
||||
}
|
85
scripting/source/storage/ScriptElement.hxx
Normal file
85
scripting/source/storage/ScriptElement.hxx
Normal file
@@ -0,0 +1,85 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptElement.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:48 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
#ifndef _SCRIPTING_STORAGE_METADATA_ELEMENT_HXX_
|
||||
#define _SCRIPTING_STORAGE_METADATA_ELEMENT_HXX_
|
||||
|
||||
#include <osl/mutex.hxx>
|
||||
|
||||
#include <drafts/com/sun/star/script/framework/storage/ScriptImplInfo.hpp>
|
||||
|
||||
#include "XMLElement.hxx"
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
class ScriptElement : public ::scripting_impl::XMLElement
|
||||
{
|
||||
private:
|
||||
drafts::com::sun::star::script::framework::storage::ScriptImplInfo m_sII;
|
||||
|
||||
public:
|
||||
explicit ScriptElement(drafts::com::sun::star::script::framework::storage::ScriptImplInfo &);
|
||||
~ScriptElement() SAL_THROW (());
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
328
scripting/source/storage/ScriptInfo.cxx
Normal file
328
scripting/source/storage/ScriptInfo.cxx
Normal file
@@ -0,0 +1,328 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptInfo.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:49 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cppuhelper/implementationentry.hxx>
|
||||
|
||||
#include <util/util.hxx>
|
||||
#include <ScriptInfo.hxx>
|
||||
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptStorageManager.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XParcelInvocationPrep.hpp>
|
||||
|
||||
using namespace ::rtl;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace com::sun::star::beans;
|
||||
using namespace ::drafts::com::sun::star::script::framework;
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
const sal_Char* const SI_SERVICE_NAME="drafts.com.sun.star.script.framework.storage.ScriptInfo";
|
||||
const sal_Char* const SI_IMPL_NAME="drafts.com.sun.star.script.framework.storage.ScriptInfo";
|
||||
|
||||
static OUString si_implName = OUString::createFromAscii(SI_IMPL_NAME);
|
||||
static OUString si_serviceName = OUString::createFromAscii(SI_SERVICE_NAME);
|
||||
static Sequence< OUString > si_serviceNames = Sequence< OUString >( &si_serviceName, 1 );
|
||||
|
||||
extern ::rtl_StandardModuleCount s_moduleCount;
|
||||
|
||||
static sal_Char docUriPrefix [] = "vnd.sun.star.pkg";
|
||||
|
||||
//*************************************************************************
|
||||
ScriptInfo::ScriptInfo( const Reference< XComponentContext > & xContext )
|
||||
: m_xContext( xContext )
|
||||
{
|
||||
OSL_TRACE( "< ScriptInfo ctor called >\n" );
|
||||
s_moduleCount.modCnt.acquire( &s_moduleCount.modCnt );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
ScriptInfo::~ScriptInfo()
|
||||
{
|
||||
OSL_TRACE( "< ScriptInfo dtor called >\n" );
|
||||
s_moduleCount.modCnt.release( &s_moduleCount.modCnt );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptInfo::initialize(Sequence <Any> const & args)
|
||||
throw (RuntimeException, Exception)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (((args[0] >>= m_scriptImplInfo) == sal_False) ||
|
||||
((args[1] >>= m_storageID) == sal_False))
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptInfo: initialize(): "), Reference< XInterface >());
|
||||
}
|
||||
}
|
||||
catch (Exception &e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptInfo: initialize(): ") + e.Message, Reference< XInterface >());
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptInfo::getLogicalName( ) throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
return m_scriptImplInfo.logicalName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptInfo::setLogicalName( const OUString& name ) throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
m_scriptImplInfo.logicalName = name;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptInfo::getDescription( ) throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
return m_scriptImplInfo.scriptDescription;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptInfo::setDescription( const OUString& desc ) throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
m_scriptImplInfo.scriptDescription = desc;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptInfo::getLanguage( ) throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
return m_scriptImplInfo.scriptLanguage;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptInfo::setLanguage( const OUString& language ) throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
m_scriptImplInfo.scriptLanguage = language;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptInfo::getScriptLocation()
|
||||
throw ( RuntimeException )
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
return m_scriptImplInfo.scriptLocation;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
sal_Bool SAL_CALL ScriptInfo::hasSource( ) throw (RuntimeException)
|
||||
{
|
||||
return m_scriptImplInfo.scriptSource;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptInfo::getLanguageSpecificName( ) throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
return m_scriptImplInfo.functionName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptInfo::setLanguageSpecificName( const OUString& langName ) throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
m_scriptImplInfo.functionName = langName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptInfo::getRoot( ) throw (RuntimeException)
|
||||
{
|
||||
return m_scriptImplInfo.scriptRoot;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Sequence< OUString > SAL_CALL ScriptInfo::getDependencies( ) throw (RuntimeException)
|
||||
{
|
||||
storage::ScriptDepFile *pArray = m_scriptImplInfo.scriptDependencies.getArray();
|
||||
int len = m_scriptImplInfo.scriptDependencies.getLength();
|
||||
Sequence< OUString > r_deps(len);
|
||||
for(int i = 0; i < len; i++)
|
||||
{
|
||||
r_deps[i] = pArray[i].fileName;
|
||||
}
|
||||
|
||||
return r_deps;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptInfo::getLocation( ) throw (RuntimeException)
|
||||
{
|
||||
OUString location = OUString::createFromAscii("need to be done");
|
||||
|
||||
return location;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Reference< XPropertySet > SAL_CALL ScriptInfo::extraProperties( ) throw (RuntimeException)
|
||||
{
|
||||
Reference <XPropertySet> x;
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptInfo::getImplementationName( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return si_implName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/**
|
||||
* This function prepares the script for invocation and returns the full path
|
||||
* to the prepared parcel folder
|
||||
*
|
||||
*/
|
||||
::rtl::OUString SAL_CALL ScriptInfo::prepareForInvocation() throw(RuntimeException)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (m_scriptImplInfo.parcelURI.compareToAscii(docUriPrefix, 16) != 0)
|
||||
{
|
||||
return m_scriptImplInfo.parcelURI;
|
||||
}
|
||||
|
||||
validateXRef(m_xContext, "ScriptInfo::prepareForInvocation(): invalid context");
|
||||
Any aAny=m_xContext->getValueByName(
|
||||
OUString::createFromAscii(
|
||||
"/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager"));
|
||||
Reference <XInterface> xx;
|
||||
if ((aAny >>= xx) == sal_False)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptInfo::prepareForInvocation(): could not get ScriptStorageManager"), Reference< XInterface >());
|
||||
}
|
||||
|
||||
validateXRef(xx, "ScriptInfo::prepareForInvocation(): could not get XInterface");
|
||||
Reference<storage::XScriptStorageManager> xSSM(xx,UNO_QUERY_THROW);
|
||||
validateXRef(xSSM, "ScriptInfo::prepareForInvocation(): could not get XScriptStorageManager");
|
||||
xx = xSSM->getScriptStorage(m_storageID);
|
||||
validateXRef(xx, "ScriptInfo::prepareForInvocation(): could not get XInterface");
|
||||
Reference <storage::XParcelInvocationPrep> xPIP(xx, UNO_QUERY_THROW);
|
||||
validateXRef(xPIP, "ScriptInfo::prepareForInvocation(): could not get XParcelInvocationPrep");
|
||||
return xPIP->prepareForInvocation(m_scriptImplInfo.parcelURI);
|
||||
}
|
||||
catch(RuntimeException &e)
|
||||
{
|
||||
OUString temp = OUSTR(
|
||||
"ScriptInfo::prepareForInvocation RuntimeException: ");
|
||||
throw RuntimeException(temp.concat(e.Message),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUSTR(
|
||||
"ScriptInfo::prepareForInvocation UnknownException: "),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
sal_Bool SAL_CALL ScriptInfo::supportsService( const OUString& serviceName )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
OUString const * pNames = si_serviceNames.getConstArray();
|
||||
for ( sal_Int32 nPos = si_serviceNames.getLength(); nPos--; )
|
||||
{
|
||||
if (serviceName.equals( pNames[ nPos ] ))
|
||||
{
|
||||
return sal_True;
|
||||
}
|
||||
}
|
||||
return sal_False;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Sequence<OUString> SAL_CALL ScriptInfo::getSupportedServiceNames( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return si_serviceNames;
|
||||
}
|
||||
//*************************************************************************
|
||||
Reference<XInterface> SAL_CALL si_create(
|
||||
const Reference< XComponentContext > & xCompC )
|
||||
{
|
||||
return (cppu::OWeakObject *)new ScriptInfo( xCompC );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Sequence<OUString> si_getSupportedServiceNames( )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
return si_serviceNames;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString si_getImplementationName( )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
return si_implName;
|
||||
}
|
||||
}
|
123
scripting/source/storage/ScriptInfo.hxx
Normal file
123
scripting/source/storage/ScriptInfo.hxx
Normal file
@@ -0,0 +1,123 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptInfo.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:50 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#ifndef __SCRIPTING_STORAGE_SCRIPTINFO_HXX_
|
||||
#define __SCRIPTING_STORAGE_SCRIPTINFO_HXX_
|
||||
|
||||
#include <cppuhelper/implbase4.hxx> // helper for component factory
|
||||
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XInitialization.hpp>
|
||||
#include <com/sun/star/beans/XPropertySet.hpp>
|
||||
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptInfo.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/ScriptImplInfo.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptInvocationPrep.hpp>
|
||||
|
||||
namespace scripting_impl {
|
||||
|
||||
class ScriptInfo : public ::cppu::WeakImplHelper4< ::com::sun::star::lang::XServiceInfo, ::com::sun::star::lang::XInitialization, ::drafts::com::sun::star::script::framework::storage::XScriptInfo, ::drafts::com::sun::star::script::framework::storage::XScriptInvocationPrep >
|
||||
{
|
||||
// private member
|
||||
private:
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext> m_xContext;
|
||||
|
||||
::osl::Mutex m_mutex;
|
||||
|
||||
::drafts::com::sun::star::script::framework::storage::ScriptImplInfo m_scriptImplInfo;
|
||||
sal_uInt16 m_storageID;
|
||||
|
||||
// public interface
|
||||
public:
|
||||
explicit ScriptInfo( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& );
|
||||
virtual ~ScriptInfo();
|
||||
|
||||
virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
|
||||
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
|
||||
|
||||
virtual void SAL_CALL initialize(::com::sun::star::uno::Sequence < ::com::sun::star::uno::Any > const & args) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::uno::Exception);
|
||||
|
||||
// XScriptInfo
|
||||
virtual ::rtl::OUString SAL_CALL getLogicalName( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL setLogicalName( const ::rtl::OUString& name ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getDescription( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL setDescription( const ::rtl::OUString& desc ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getLanguage( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getScriptLocation( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL setLanguage( const ::rtl::OUString& language ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual sal_Bool SAL_CALL hasSource( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getLanguageSpecificName( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual void SAL_CALL setLanguageSpecificName( const ::rtl::OUString& langName ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getRoot( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getDependencies( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL extraProperties( ) throw (::com::sun::star::uno::RuntimeException);
|
||||
/**
|
||||
* This function prepares the script for invocation and returns the full path
|
||||
* to the prepared parcel folder
|
||||
*/
|
||||
virtual ::rtl::OUString SAL_CALL prepareForInvocation() throw (::com::sun::star::uno::RuntimeException);
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
#endif // define __SCRIPTING_STORAGE...
|
562
scripting/source/storage/ScriptMetadataImporter.cxx
Normal file
562
scripting/source/storage/ScriptMetadataImporter.cxx
Normal file
@@ -0,0 +1,562 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptMetadataImporter.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:50 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include "ScriptMetadataImporter.hxx"
|
||||
#include <osl/mutex.hxx>
|
||||
#include <com/sun/star/xml/sax/XParser.hpp>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <util/util.hxx>
|
||||
#include <rtl/string.h>
|
||||
|
||||
using namespace ::rtl;
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::drafts::com::sun::star::script::framework;
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
//*************************************************************************
|
||||
ScriptMetadataImporter::ScriptMetadataImporter( const Reference< XComponentContext > & xContext ) : m_xContext( xContext )
|
||||
{
|
||||
OSL_TRACE( "< ScriptMetadataImporter ctor called >\n" );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
ScriptMetadataImporter::~ScriptMetadataImporter() SAL_THROW( () )
|
||||
{
|
||||
OSL_TRACE( "< ScriptMetadataImporter dtor called >\n" );
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
Impls_vec ScriptMetadataImporter::parseMetaData(
|
||||
Reference< io::XInputStream > const & xInput, const ::rtl::OUString & parcelURI )
|
||||
throw ( xml::sax::SAXException, io::IOException, RuntimeException )
|
||||
{
|
||||
//Clear the vector of parsed information
|
||||
ms_scriptInfos.clear();
|
||||
|
||||
//Set the placeholder for the parcel URI
|
||||
ms_parcelURI = parcelURI;
|
||||
|
||||
//Get the parser service
|
||||
validateXRef(m_xContext,
|
||||
"ScriptMetadataImporter::parseMetaData: No context available");
|
||||
|
||||
Reference< lang::XMultiComponentFactory > xMgr = m_xContext->getServiceManager();
|
||||
validateXRef(xMgr,
|
||||
"ScriptMetadataImporter::parseMetaData: No service manager available");
|
||||
|
||||
Reference< XInterface > xx = xMgr->createInstanceWithContext(
|
||||
OUString::createFromAscii("com.sun.star.xml.sax.Parser"), m_xContext );
|
||||
|
||||
validateXRef(xMgr, "ScriptMetadataImporter::parseMetaData: cannot get SAX Parser");
|
||||
Reference< xml::sax::XParser > xParser(xx,UNO_QUERY_THROW);
|
||||
|
||||
// xxx todo: error handler, entity resolver omitted
|
||||
// This class is the document handler for the parser
|
||||
Reference< xml::sax::XDocumentHandler > t_smI( this );
|
||||
xParser->setDocumentHandler( t_smI );
|
||||
|
||||
//Set up the input for the parser, the XInputStream
|
||||
xml::sax::InputSource source;
|
||||
source.aInputStream = xInput;
|
||||
source.sSystemId = OUSTR("virtual file");
|
||||
|
||||
OSL_TRACE("ScriptMetadataImporter: Start the parser\n");
|
||||
|
||||
try
|
||||
{
|
||||
xParser->parseStream( source );
|
||||
}
|
||||
catch ( xml::sax::SAXException & saxe )
|
||||
{
|
||||
throw xml::sax::SAXException(
|
||||
OUString::createFromAscii(
|
||||
"ScriptMetadataImporter::parseMetaData SAXException: ") +saxe.Message,
|
||||
Reference< XInterface > (), saxe.WrappedException);
|
||||
}
|
||||
catch ( io::IOException & ioe )
|
||||
{
|
||||
throw io::IOException( OUString::createFromAscii(
|
||||
"ScriptMetadataImporter::parseMetaData IOException: ")+ioe.Message,
|
||||
Reference< XInterface > ());
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUString::createFromAscii(
|
||||
"ScriptMetadataImporter::parseMetadata UnknownException: "),
|
||||
Reference< XInterface > ());
|
||||
}
|
||||
#endif
|
||||
OSL_TRACE("ScriptMetadataImporter: Parser finished\n");
|
||||
#ifdef _DEBUG
|
||||
|
||||
printf("ScriptMetadataImporter: vector size is %d\n", ms_scriptInfos.size());
|
||||
#endif
|
||||
//return the vector of ScriptImplInfos
|
||||
return ms_scriptInfos;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// XExtendedDocumentHandler impl
|
||||
void ScriptMetadataImporter::startCDATA()
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: startCDATA()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::endCDATA()
|
||||
throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: endDATA()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::comment( const ::rtl::OUString & sComment )
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: comment()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::allowLineBreak()
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: allowLineBreak()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::unknown( const ::rtl::OUString & sString )
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: unknown()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// XDocumentHandler impl
|
||||
void ScriptMetadataImporter::startDocument()
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
// Ignore for now
|
||||
OSL_TRACE("ScriptMetadataImporter: startDocument()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::endDocument()
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
// Ignore for now
|
||||
OSL_TRACE("ScriptMetadataImporter: endDocument()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::startElement(
|
||||
const ::rtl::OUString& tagName,
|
||||
const Reference< xml::sax::XAttributeList >& xAttribs )
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
printf("ScriptMetadataImporter: startElement() %s\n",
|
||||
::rtl::OUStringToOString(tagName,
|
||||
RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
//Set the state of the state machine
|
||||
setState(tagName);
|
||||
|
||||
//Temporay variables
|
||||
::rtl::OUString t_delivered = ::rtl::OUString::createFromAscii("false");
|
||||
|
||||
//Processing the elements
|
||||
switch(m_state)
|
||||
{
|
||||
case PARCEL:
|
||||
break;
|
||||
|
||||
|
||||
case LOGICALNAME:
|
||||
//logical name
|
||||
m_scriptImplInfo.logicalName =
|
||||
xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("value"));
|
||||
#ifdef _DEBUG
|
||||
|
||||
printf("ScriptMetadataImporter: Got logicalname: %s\n",
|
||||
::rtl::OUStringToOString(m_scriptImplInfo.logicalName,
|
||||
RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
break;
|
||||
|
||||
case LANGUAGENAME:
|
||||
//language(function) name
|
||||
m_scriptImplInfo.functionName =
|
||||
xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("value"));
|
||||
m_scriptImplInfo.scriptLocation =
|
||||
xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("location"));
|
||||
#ifdef _DEBUG
|
||||
|
||||
printf("ScriptMetadataImporter: Got language: %s\n",
|
||||
::rtl::OUStringToOString(m_scriptImplInfo.functionName,
|
||||
RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
break;
|
||||
|
||||
case DELIVERFILE:
|
||||
//Get Info about delivered files
|
||||
mv_delivFile.push_back( xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("name")));
|
||||
mv_deliverType.push_back( xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("type")));
|
||||
|
||||
break;
|
||||
|
||||
case DEPENDFILE:
|
||||
//push the dependency into the the vector
|
||||
mv_deps.push_back( xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("name")));
|
||||
|
||||
t_delivered = xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("isdeliverable"));
|
||||
|
||||
if( t_delivered.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("yes")) )
|
||||
{
|
||||
mv_depsDelivered.push_back( true );
|
||||
}
|
||||
else
|
||||
{
|
||||
mv_depsDelivered.push_back( false );
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
printf("ScriptMetadataImporter: Got dependency: %s\n",
|
||||
::rtl::OUStringToOString( xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("name")),
|
||||
RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
break;
|
||||
|
||||
//Needs to be here to circumvent bypassing of initialization of
|
||||
//local(global) variables affecting other cases
|
||||
case SCRIPT:
|
||||
//Assign a new empty struct to the member struct to clear
|
||||
//all values in the struct
|
||||
storage::ScriptImplInfo t_implInfo;
|
||||
m_scriptImplInfo = t_implInfo;
|
||||
m_scriptImplInfo.parcelURI = ms_parcelURI;
|
||||
if(xAttribs->getLength() == 2)
|
||||
{
|
||||
//Get the script tag attributes
|
||||
OSL_TRACE("ScriptMetadataImporter: Get language and deployment dir\n");
|
||||
|
||||
//script language
|
||||
m_scriptImplInfo.scriptLanguage = xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii("language"));
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
printf("ScriptMetadataImporter: Got language: %s\n",
|
||||
::rtl::OUStringToOString(m_scriptImplInfo.scriptLanguage,
|
||||
RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
//script root directory
|
||||
m_scriptImplInfo.scriptRoot = xAttribs->getValueByName(
|
||||
::rtl::OUString::createFromAscii( "deploymentdir" ));
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
printf("ScriptMetadataImporter: Got dir: %s\n",
|
||||
::rtl::OUStringToOString(m_scriptImplInfo.scriptRoot,
|
||||
RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::endElement( const ::rtl::OUString & aName )
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
|
||||
//The end tag of an element
|
||||
#ifdef _DEBUG
|
||||
printf("ScriptMetadataImporter: endElement() %s\n", ::rtl::OUStringToOString(aName,
|
||||
RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
//Set the state
|
||||
setState(aName);
|
||||
|
||||
//Temporary variables
|
||||
int t_delSize = 0;
|
||||
|
||||
switch (m_state)
|
||||
{
|
||||
case PARCEL:
|
||||
break;
|
||||
case SCRIPT:
|
||||
#ifdef _DEBUG
|
||||
|
||||
OSL_TRACE("ScriptMetadataImporter: Got a scriptImplInfo\n");
|
||||
|
||||
printf("ScriptMetadataImporter: \t %s\n", ::rtl::OUStringToOString(
|
||||
m_scriptImplInfo.scriptLanguage, RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
//Push the struct into the vector
|
||||
ms_scriptInfos.push_back(m_scriptImplInfo);
|
||||
break;
|
||||
|
||||
case LOGICALNAME:
|
||||
break;
|
||||
|
||||
case LANGUAGENAME:
|
||||
break;
|
||||
|
||||
case DELIVERY:
|
||||
t_delSize = mv_delivFile.size();
|
||||
if(t_delSize > 0)
|
||||
{
|
||||
Sequence< storage::ScriptDeliverFile > t_delivers(t_delSize);
|
||||
Deps_vec::const_iterator it = mv_delivFile.begin();
|
||||
Deps_vec::const_iterator it_end = mv_delivFile.end();
|
||||
Deps_vec::const_iterator itType = mv_deliverType.begin();
|
||||
Deps_vec::const_iterator itType_end = mv_deliverType.end();
|
||||
for(int cnt = 0; (it!=it_end)&&(itType!=itType_end); ++it)
|
||||
{
|
||||
t_delivers[cnt].fileName = *it;
|
||||
t_delivers[cnt].fileType = *itType;
|
||||
cnt++;
|
||||
++itType;
|
||||
}
|
||||
m_scriptImplInfo.parcelDelivers = t_delivers;
|
||||
mv_delivFile.clear();
|
||||
mv_deliverType.clear();
|
||||
}
|
||||
break;
|
||||
|
||||
case DEPENDENCIES:
|
||||
//Iterator through the vector of dependencies
|
||||
//and put them into a sequence
|
||||
int t_depsSize = mv_deps.size();
|
||||
//Check if there is any dependencies, no need
|
||||
//to bother doing anything
|
||||
if(t_depsSize > 0)
|
||||
{
|
||||
Sequence< storage::ScriptDepFile > t_deps(t_depsSize);
|
||||
Deps_vec::const_iterator it = mv_deps.begin();
|
||||
Bool_vec::const_iterator itDel = mv_depsDelivered.begin();
|
||||
Deps_vec::const_iterator it_end = mv_deps.end();
|
||||
Bool_vec::const_iterator itDel_end = mv_depsDelivered.end();
|
||||
for( int cnt = 0; (it!=it_end)&&(itDel!=itDel_end); ++it)
|
||||
{
|
||||
t_deps[cnt].fileName = *it;
|
||||
t_deps[cnt].isDeliverable = *itDel;
|
||||
cnt++;
|
||||
++itDel;
|
||||
}
|
||||
m_scriptImplInfo.scriptDependencies = t_deps;
|
||||
//Clear the dependencies vector
|
||||
mv_deps.clear();
|
||||
mv_depsDelivered.clear();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::characters( const ::rtl::OUString & aChars )
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: characters()\n");
|
||||
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
switch (m_state)
|
||||
{
|
||||
case PARCEL:
|
||||
break;
|
||||
case SCRIPT:
|
||||
break;
|
||||
case LANGUAGENAME:
|
||||
break;
|
||||
case LOGICALNAME:
|
||||
break;
|
||||
case DEPENDENCIES:
|
||||
break;
|
||||
case DESCRIPTION:
|
||||
//Put description into the struct
|
||||
m_scriptImplInfo.scriptDescription = aChars;
|
||||
break;
|
||||
case DELIVERY:
|
||||
break;
|
||||
case DELIVERFILE:
|
||||
break;
|
||||
case DEPENDFILE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::ignorableWhitespace(
|
||||
const ::rtl::OUString & aWhitespaces )
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: ignorableWhiteSpace()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::processingInstruction(
|
||||
const ::rtl::OUString & aTarget, const ::rtl::OUString & aData )
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: processingInstruction()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::setDocumentLocator(
|
||||
const Reference< xml::sax::XLocator >& xLocator )
|
||||
throw (xml::sax::SAXException, RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptMetadataImporter: setDocumentLocator()\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptMetadataImporter::setState(const ::rtl::OUString & tagName)
|
||||
{
|
||||
//Set the state depending on the tag name of the current
|
||||
//element the parser has arrived at
|
||||
::osl::Guard< ::osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
if(tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("parcel") ))
|
||||
{
|
||||
//Parcel tag
|
||||
m_state = PARCEL;
|
||||
}
|
||||
else if (tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("script") ))
|
||||
{
|
||||
//Script tag
|
||||
m_state = SCRIPT;
|
||||
}
|
||||
else if (tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("logicalname") ))
|
||||
{
|
||||
//logicalname tag
|
||||
m_state = LOGICALNAME;
|
||||
}
|
||||
else if (tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("languagename") ))
|
||||
{
|
||||
//languagename tag
|
||||
m_state = LANGUAGENAME;
|
||||
}
|
||||
else if(tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("dependencies") ))
|
||||
{
|
||||
//dependencies tag
|
||||
m_state = DEPENDENCIES;
|
||||
}
|
||||
else if(tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("description") ))
|
||||
{
|
||||
//Description tag
|
||||
m_state = DESCRIPTION;
|
||||
}
|
||||
else if(tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("delivery") ))
|
||||
{
|
||||
//delivery tag, nothing to be done here
|
||||
m_state = DELIVERY;
|
||||
}
|
||||
else if(tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("deliverfile") ))
|
||||
{
|
||||
//deliverfile tag, nothing to be done here
|
||||
m_state = DELIVERFILE;
|
||||
}
|
||||
else if(tagName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("dependfile") ))
|
||||
{
|
||||
m_state = DEPENDFILE;
|
||||
}
|
||||
else
|
||||
{
|
||||
//If there is a tag we don't know about, throw a expcetion (woobler) :)
|
||||
::rtl::OUString str_sax = ::rtl::OUString::createFromAscii( "No Such Tag" );
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
printf("ScriptMetadataImporter: No Such Tag: %s\n", ::rtl::OUStringToOString(
|
||||
tagName, RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
throw xml::sax::SAXException(
|
||||
str_sax, Reference< XInterface >(), Any() );
|
||||
}
|
||||
}
|
||||
}
|
279
scripting/source/storage/ScriptMetadataImporter.hxx
Normal file
279
scripting/source/storage/ScriptMetadataImporter.hxx
Normal file
@@ -0,0 +1,279 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptMetadataImporter.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:50 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
#ifndef _SCRIPTING_STORAGE_SCRIPTMETADATAIMPORTER_HXX_
|
||||
#define _SCRIPTING_STORAGE_SCRIPTMETADATAIMPORTER_HXX_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <rtl/ustring.h>
|
||||
#include <osl/mutex.hxx>
|
||||
#include <cppuhelper/implbase1.hxx> // helper for component factory
|
||||
|
||||
#include <com/sun/star/uno/XComponentContext.hpp>
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XInitialization.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/ScriptImplInfo.hpp>
|
||||
#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
|
||||
#include <com/sun/star/io/XInputStream.hpp>
|
||||
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
typedef ::std::vector< ::drafts::com::sun::star::script::framework::storage::ScriptImplInfo > Impls_vec;
|
||||
typedef ::std::vector< ::rtl::OUString > Deps_vec;
|
||||
typedef ::std::vector< bool > Bool_vec;
|
||||
|
||||
/**
|
||||
* Script Meta Data Importer
|
||||
*/
|
||||
class ScriptMetadataImporter
|
||||
: public ::cppu::WeakImplHelper1< ::com::sun::star::xml::sax::XExtendedDocumentHandler >
|
||||
{
|
||||
// private member
|
||||
private:
|
||||
|
||||
/** Vector contains the ScriptImplInfo structs */
|
||||
Impls_vec ms_scriptInfos;
|
||||
|
||||
/** @internal */
|
||||
Deps_vec mv_deps;
|
||||
|
||||
/** @internal */
|
||||
Deps_vec mv_delivFile;
|
||||
|
||||
/** @internal */
|
||||
Deps_vec mv_deliverType;
|
||||
|
||||
/** @internal */
|
||||
Bool_vec mv_depsDelivered;
|
||||
|
||||
/** @internal */
|
||||
osl::Mutex m_mutex;
|
||||
|
||||
/** @internal */
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
|
||||
|
||||
//Placeholder for the parcel URI
|
||||
::rtl::OUString ms_parcelURI;
|
||||
|
||||
/** States for state machine during parsing */
|
||||
enum { PARCEL, SCRIPT, LANGUAGE_NAME, LOGICALNAME, LANGUAGENAME,
|
||||
DEPENDENCIES, DESCRIPTION, DELIVERY, DELIVERFILE, DEPENDFILE } m_state;
|
||||
|
||||
::com::sun::star::uno::Sequence< ::rtl::OUString > ms_dependFiles;
|
||||
|
||||
//Build up the struct during parsing the meta data
|
||||
::drafts::com::sun::star::script::framework::storage::ScriptImplInfo m_scriptImplInfo;
|
||||
|
||||
//Helper function to set the state
|
||||
void setState(const ::rtl::OUString & tagName);
|
||||
|
||||
// public interface
|
||||
public:
|
||||
|
||||
/**
|
||||
* This function will begin the parser and parse the meta data
|
||||
*
|
||||
* @param xInput The XInputStream for the parser which contains the XML
|
||||
* @param parcelURI The parcel's URI in the document or the application
|
||||
*
|
||||
* @see ::com::sun::star::io::XInputStream
|
||||
*/
|
||||
Impls_vec parseMetaData(
|
||||
::com::sun::star::uno::Reference<
|
||||
::com::sun::star::io::XInputStream >
|
||||
const & xInput, const ::rtl::OUString & parcelURI )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::io::IOException,
|
||||
::com::sun::star::uno::RuntimeException);
|
||||
|
||||
explicit ScriptMetadataImporter( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& );
|
||||
virtual ~ScriptMetadataImporter() SAL_THROW( () );
|
||||
|
||||
// XExtendedDocumentHandler impl
|
||||
/**
|
||||
* Function to handle the start of CDATA in XML
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XExtendedDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL startCDATA()
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle the end of CDATA in XML
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XExtendedDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL endCDATA()
|
||||
throw ( ::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle comments in XML
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XExtendedDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL comment( const ::rtl::OUString & sComment )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle line breaks in XML
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XExtendedDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL allowLineBreak()
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle unknowns in XML
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XExtendedDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL unknown( const ::rtl::OUString & sString )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle the start of XML document
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XExtendedDocumentHandler
|
||||
*/
|
||||
// XDocumentHandler impl
|
||||
virtual void SAL_CALL startDocument()
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle the end of the XML document
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL endDocument()
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle the start of an element
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL startElement(
|
||||
const ::rtl::OUString& aName,
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttribs )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle the end of an element
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL endElement( const ::rtl::OUString & aName )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle characters in elements
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL characters( const ::rtl::OUString & aChars )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle whitespace
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL ignorableWhitespace(
|
||||
const ::rtl::OUString & aWhitespaces )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to handle XML processing instructions
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL processingInstruction(
|
||||
const ::rtl::OUString & aTarget, const ::rtl::OUString & aData )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
|
||||
/**
|
||||
* Function to set the document locator
|
||||
*
|
||||
* @see com::sun::star::xml::sax::XDocumentHandler
|
||||
*/
|
||||
virtual void SAL_CALL setDocumentLocator(
|
||||
const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XLocator >& xLocator )
|
||||
throw ( ::com::sun::star::xml::sax::SAXException,
|
||||
::com::sun::star::uno::RuntimeException );
|
||||
}
|
||||
; // class ScriptMetadataImporter
|
||||
|
||||
}
|
||||
|
||||
#endif
|
691
scripting/source/storage/ScriptStorage.cxx
Normal file
691
scripting/source/storage/ScriptStorage.cxx
Normal file
@@ -0,0 +1,691 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptStorage.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:51 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cppuhelper/implementationentry.hxx>
|
||||
#include <com/sun/star/lang/IllegalArgumentException.hpp>
|
||||
#include <com/sun/star/ucb/CommandAbortedException.hpp>
|
||||
#include <com/sun/star/io/XActiveDataSource.hpp>
|
||||
#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/ScriptImplInfo.hpp>
|
||||
|
||||
#include <util/util.hxx>
|
||||
|
||||
#include "ScriptInfo.hxx"
|
||||
#include "ScriptStorage.hxx"
|
||||
#include "ScriptMetadataImporter.hxx"
|
||||
#include "ScriptElement.hxx"
|
||||
|
||||
using namespace ::rtl;
|
||||
using namespace ::cppu;
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::drafts::com::sun::star::script::framework;
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
const sal_Char* const SERVICE_NAME="drafts.com.sun.star.script.framework.storage.ScriptStorage";
|
||||
const sal_Char* const IMPL_NAME="drafts.com.sun.star.script.framework.storage.ScriptStorage";
|
||||
|
||||
static OUString ss_implName = OUString::createFromAscii(IMPL_NAME);
|
||||
static OUString ss_serviceName = OUString::createFromAscii(SERVICE_NAME);
|
||||
static Sequence< OUString > ss_serviceNames = Sequence< OUString >( &ss_serviceName, 1 );
|
||||
|
||||
extern ::rtl_StandardModuleCount s_moduleCount;
|
||||
|
||||
//*************************************************************************
|
||||
ScriptStorage::ScriptStorage( const Reference<
|
||||
XComponentContext > & xContext )
|
||||
: m_xContext( xContext )
|
||||
{
|
||||
OSL_TRACE( "< ScriptStorage ctor called >\n" );
|
||||
s_moduleCount.modCnt.acquire( &s_moduleCount.modCnt );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
ScriptStorage::~ScriptStorage() SAL_THROW( () )
|
||||
{
|
||||
OSL_TRACE( "< ScriptStorage dtor called >\n" );
|
||||
s_moduleCount.modCnt.release( &s_moduleCount.modCnt );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptStorage::initialize(
|
||||
const Sequence <Any> & args )
|
||||
throw (Exception)
|
||||
{
|
||||
OSL_TRACE("Entering ScriptStorage::initialize\n");
|
||||
// work in progress.
|
||||
// what might we expect to get?
|
||||
// at the moment only consider 3 possibilities
|
||||
// 1. an XInputStream - [deprecated!!]
|
||||
// 2. an XSimpleFileAccess
|
||||
// 3. an OUString containing a URI
|
||||
|
||||
::osl::Guard< osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
Reference< io::XInputStream > xInput;
|
||||
::rtl::OUString xStringUri;
|
||||
|
||||
// need to replace this with a proper call to getService...
|
||||
ScriptMetadataImporter* SMI = new ScriptMetadataImporter(m_xContext);
|
||||
Reference<xml::sax::XExtendedDocumentHandler> xSMI(SMI);
|
||||
if (args.getLength())
|
||||
{
|
||||
if((sal_False != (args[0] >>= m_xSimpleFileAccess)) &&
|
||||
(sal_False != (args[1]>>=m_scriptStorageID)))
|
||||
{
|
||||
if(args.getLength()>2 && (sal_False == (args[2] >>= xStringUri)))
|
||||
{
|
||||
xStringUri=::rtl::OUString::createFromAscii("");
|
||||
}
|
||||
}
|
||||
/* deprecated?
|
||||
else if((sal_False != (args[1]>>=m_scriptStorageID)) &&
|
||||
(sal_False != (args[0] >>= xStringUri)))
|
||||
{
|
||||
//probably need some check for type of URI????
|
||||
validateXRef(m_xContext, "ScriptStorage::initialize: No context available");
|
||||
Reference< lang::XMultiComponentFactory > xMgr = m_xContext->getServiceManager();
|
||||
validateXRef(xMgr, "ScriptStorage::initialize: No service manager available");
|
||||
Reference< XInterface > xx = xMgr->createInstanceWithContext(OUString::createFromAscii("com.sun.star.ucb.SimpleFileAccess"), m_xContext );
|
||||
validateXRef(xMgr, "ScriptStorage::initialize: cannot get XSimpleFileAccess");
|
||||
m_xSimpleFileAccess.set(xx, UNO_QUERY_THROW);
|
||||
} */
|
||||
else
|
||||
{
|
||||
OSL_TRACE("ScriptStorage::initialize: got some unknown type of arg\n");
|
||||
throw lang::IllegalArgumentException(
|
||||
OUSTR("unexpected argument type provided!"),
|
||||
static_cast< OWeakObject * >( this ), 0 );
|
||||
}
|
||||
}
|
||||
else //no args provided
|
||||
{
|
||||
OSL_TRACE("ScriptStorage::initialize: got no args\n");
|
||||
throw lang::IllegalArgumentException(
|
||||
OUSTR("No arguments provided!"),
|
||||
static_cast< OWeakObject * >( this ), 0 );
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr,"uri: %s\n",::rtl::OUStringToOString(xStringUri,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
xStringUri=xStringUri.concat(::rtl::OUString::createFromAscii("/Scripts"));
|
||||
|
||||
// get the list of files/folders under the Scripts directory
|
||||
Sequence< ::rtl::OUString > results=m_xSimpleFileAccess->getFolderContents(xStringUri,true);
|
||||
for(int i=0;i<results.getLength();i++)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr,"contains: %s\n",::rtl::OUStringToOString(results[i],RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
if(m_xSimpleFileAccess->isFolder(results[i]))
|
||||
{
|
||||
//get the list of files/folders for each folder
|
||||
// under Scripts/
|
||||
Sequence< ::rtl::OUString > subresults=m_xSimpleFileAccess->getFolderContents(results[i],true);
|
||||
for(int j=0;j<subresults.getLength();j++)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr,"contains: %s\n",::rtl::OUStringToOString(subresults[j],RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
OUString parcelFile=subresults[j].concat(::rtl::OUString::createFromAscii("/parcel.xml"));
|
||||
//if the subfolder Scripts/*/ has a file
|
||||
//called parcel.xml
|
||||
if(m_xSimpleFileAccess->isFolder(subresults[j]) && m_xSimpleFileAccess->exists(parcelFile) && !m_xSimpleFileAccess->isFolder(parcelFile))
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr,"parcel file: %s\n",::rtl::OUStringToOString(parcelFile,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
xInput = m_xSimpleFileAccess->openFileRead(parcelFile);
|
||||
if (xInput.is())
|
||||
{
|
||||
// should I aquire the stream??
|
||||
OSL_TRACE("Parse the metadata \n");
|
||||
#ifndef TEST_ONLY
|
||||
|
||||
Impls_vec vSII = SMI->parseMetaData( xInput, subresults[j] );
|
||||
xInput->closeInput();
|
||||
#else
|
||||
|
||||
Impls_vec vSII;
|
||||
storage::ScriptImplInfo m,m2,m3;
|
||||
m.scriptLanguage=rtl::OUString::createFromAscii("java");
|
||||
;
|
||||
m.functionName=rtl::OUString::createFromAscii("com.sun.star.foo");
|
||||
;
|
||||
m.logicalName=rtl::OUString::createFromAscii("my.foo");
|
||||
;
|
||||
m2.scriptLanguage=rtl::OUString::createFromAscii("java");
|
||||
;
|
||||
m2.functionName=rtl::OUString::createFromAscii("com.sun.star.foo2");
|
||||
;
|
||||
m2.logicalName=rtl::OUString::createFromAscii("my.foo");
|
||||
;
|
||||
m3.scriptLanguage=rtl::OUString::createFromAscii("java");
|
||||
;
|
||||
m3.functionName=rtl::OUString::createFromAscii("com.sun.star.bar");
|
||||
;
|
||||
m3.logicalName=rtl::OUString::createFromAscii("my.bar");
|
||||
;
|
||||
vSII.push_back(m);
|
||||
vSII.push_back(m2);
|
||||
vSII.push_back(m3);
|
||||
|
||||
#endif
|
||||
// should I now release the stream??
|
||||
updateMaps(vSII);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(xml::sax::SAXException saxe)
|
||||
{
|
||||
//From ScriptMetadata Importer
|
||||
OSL_TRACE("caught com::sun::star::xml::sax::SAXException in ScriptStorage::initalize");
|
||||
throw RuntimeException(OUSTR("ScriptStorage::initalize SAXException: ")+saxe.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
catch(io::IOException ioe)
|
||||
{
|
||||
//From ScriptMetadata Importer
|
||||
OSL_TRACE("caught com::sun::star::io::IOException in ScriptStorage::initalize");
|
||||
throw RuntimeException(OUSTR("ScriptStorage::initalize IOException: ")+ioe.Message,
|
||||
Reference<XInterface> ());
|
||||
|
||||
}
|
||||
catch(ucb::CommandAbortedException cae)
|
||||
{
|
||||
OSL_TRACE("caught com::sun::star::ucb::CommandAbortedException in ScriptStorage::initialize");
|
||||
throw RuntimeException(OUSTR("ScriptStorage::initalize CommandAbortedException: ")+cae.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
catch(Exception ue)
|
||||
{
|
||||
OSL_TRACE("caught com::sun::star::uno::Exception in ScriptStorage::initialize");
|
||||
throw RuntimeException(OUSTR("ScriptStorage::initalize Exception: ")+ue.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
OSL_TRACE("Parsed the XML\n");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// private method for updating hashmaps
|
||||
void ScriptStorage::updateMaps(Impls_vec vScriptII)
|
||||
{
|
||||
::osl::Guard< osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
Impls_vec::iterator it = vScriptII.begin();
|
||||
Impls_vec::iterator it_end = vScriptII.end();
|
||||
// step through the vector of ScripImplInfos returned from parse
|
||||
for(sal_Int32 count=0;it!=it_end;++it)
|
||||
{
|
||||
//find the Impls_vec for this logical name
|
||||
ScriptInfo_hash::iterator h_it = mh_implementations.find(it->logicalName);
|
||||
|
||||
if(h_it==mh_implementations.end())
|
||||
{
|
||||
//if it's null, need to create a new Impls_vec
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr,"updateMaps: new logical name: %s\n",rtl::OUStringToOString(it->logicalName,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
fprintf(stderr," language name: %s\n",rtl::OUStringToOString(it->functionName,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
Impls_vec v;
|
||||
v.push_back(*it);
|
||||
mh_implementations[it->logicalName]=v;
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr,"updateMaps: existing logical name: %s\n",rtl::OUStringToOString(it->logicalName,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
fprintf(stderr," language name: %s\n",rtl::OUStringToOString(it->functionName,RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
h_it->second.push_back(*it);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// Not part of the interface yet, ie. not in the idl, and it should be!!
|
||||
void ScriptStorage::save()
|
||||
throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< osl::Mutex > aGuard( m_mutex );
|
||||
Reference< io::XActiveDataSource > xSource;
|
||||
Reference<io::XOutputStream> xOS;
|
||||
// xScriptInvocation = Reference<XScriptInvocation>(xx, UNO_QUERY_THROW);
|
||||
Reference<xml::sax::XExtendedDocumentHandler> xHandler;
|
||||
|
||||
OUString parcel_suffix = OUString::createFromAscii("/parcel.xml");
|
||||
|
||||
validateXRef(m_xContext, "ScriptStorage::save: No context available");
|
||||
Reference< lang::XMultiComponentFactory > xMgr = m_xContext->getServiceManager();
|
||||
validateXRef(xMgr, "ScriptStorage::save: No service manager available");
|
||||
|
||||
OUString ou_parcel = OUString( RTL_CONSTASCII_USTRINGPARAM("parcel"));
|
||||
|
||||
ScriptInfo_hash::iterator it = mh_implementations.begin();
|
||||
ScriptInfo_hash::iterator it_end = mh_implementations.end();
|
||||
for(sal_Int32 count=0;it!=it_end;++it)
|
||||
{
|
||||
::rtl::OUString logName=it->first;
|
||||
Impls_vec::iterator it_impls_end =it->second.end();
|
||||
for( Impls_vec::iterator it_impls =it->second.begin(); it_impls!=it_impls_end;++it_impls)
|
||||
{
|
||||
ScriptOutput_hash::iterator it_parcels = mh_parcels.find(it_impls->parcelURI);
|
||||
if(it_parcels==mh_parcels.end())
|
||||
{
|
||||
//create new outputstream
|
||||
OUString parcel_xml_path = it_impls->parcelURI.concat(parcel_suffix);
|
||||
m_xSimpleFileAccess->kill(parcel_xml_path);
|
||||
xOS=m_xSimpleFileAccess->openFileWrite(parcel_xml_path);
|
||||
#ifdef _DEBUG
|
||||
|
||||
fprintf(stderr,"saving: %s\n",rtl::OUStringToOString(it_impls->parcelURI.concat(OUString::createFromAscii("/parcel.xml")),RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
Reference< XInterface > xx = xMgr->createInstanceWithContext(OUString::createFromAscii("com.sun.star.xml.sax.Writer"), m_xContext );
|
||||
validateXRef(xMgr, "ScriptStorage::save: cannot get sax.Writer");
|
||||
xHandler = Reference<xml::sax::XExtendedDocumentHandler>(xx, UNO_QUERY_THROW);
|
||||
xSource = Reference< io::XActiveDataSource >( xHandler, UNO_QUERY_THROW );
|
||||
xSource->setOutputStream( xOS );
|
||||
|
||||
writeMetadataHeader(xHandler);
|
||||
|
||||
xHandler->startElement( ou_parcel, Reference< xml::sax::XAttributeList >() );
|
||||
|
||||
mh_parcels[it_impls->parcelURI]=xHandler;
|
||||
}
|
||||
else
|
||||
{
|
||||
xHandler=it_parcels->second;
|
||||
}
|
||||
|
||||
ScriptElement* pSE = new ScriptElement(*it_impls);
|
||||
// this is to get pSE released correctly
|
||||
Reference <xml::sax::XAttributeList> xal(pSE);
|
||||
pSE->dump(xHandler);
|
||||
}
|
||||
}
|
||||
|
||||
ScriptOutput_hash::const_iterator out_it_end = mh_parcels.end();
|
||||
|
||||
for(ScriptOutput_hash::const_iterator out_it = mh_parcels.begin();
|
||||
out_it != out_it_end;
|
||||
++out_it)
|
||||
{
|
||||
out_it->second->ignorableWhitespace( ::rtl::OUString() );
|
||||
out_it->second->endElement(ou_parcel);
|
||||
out_it->second->endDocument();
|
||||
xSource.set( out_it->second, UNO_QUERY );
|
||||
Reference<io::XOutputStream> xOS = xSource->getOutputStream();
|
||||
xOS->closeOutput();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void ScriptStorage::writeMetadataHeader(Reference <xml::sax::XExtendedDocumentHandler> & xHandler)
|
||||
{
|
||||
xHandler->startDocument();
|
||||
OUString aDocTypeStr( RTL_CONSTASCII_USTRINGPARAM(
|
||||
"<!DOCTYPE dlg:window PUBLIC \"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\""
|
||||
" \"parcel.dtd\">" ) );
|
||||
xHandler->unknown( aDocTypeStr );
|
||||
xHandler->ignorableWhitespace( OUString() );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
//Returns a sequence of XScriptInfo interfaces
|
||||
//to give access to info on scripts
|
||||
//Eh, method name is not initiutive, maybe it
|
||||
//should be getScriptInfoInterfaces? (Need to change IDL)
|
||||
Sequence < Reference< storage::XScriptInfo > >
|
||||
ScriptStorage::getScriptInfoService(const OUString & name)
|
||||
throw (RuntimeException)
|
||||
{
|
||||
::osl::Guard< osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
//Get iterator over the hash_map
|
||||
ScriptInfo_hash::const_iterator h_iter = mh_implementations.find(name);
|
||||
Impls_vec::const_iterator it =
|
||||
h_iter->second.begin(), end_iter = h_iter->second.end();
|
||||
|
||||
Sequence< Reference< storage::XScriptInfo > > sr_xScriptInfo(
|
||||
h_iter->second.size() );
|
||||
|
||||
//Get array of XScriptInfos
|
||||
Reference< storage::XScriptInfo >* pScriptInfo = sr_xScriptInfo.getArray();
|
||||
|
||||
validateXRef(m_xContext, "ScriptStorage::getScriptInfoService: No context available");
|
||||
Reference< lang::XMultiComponentFactory > xMgr = m_xContext->getServiceManager();
|
||||
validateXRef(xMgr, "ScriptStorage::getScriptInfoService: No service manager available");
|
||||
|
||||
for(sal_Int32 count = 0; it != end_iter; ++it)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
fprintf(stderr,"in for cycle, count is %d\n", count);
|
||||
#endif
|
||||
|
||||
Any a( makeAny( *it ) );
|
||||
Reference< XInterface > xx = xMgr->createInstanceWithArgumentsAndContext(OUString::createFromAscii("drafts.com.sun.star.script.framework.storage.ScriptInfo"), Sequence< Any >( &a, 1 ), m_xContext );
|
||||
validateXRef(xMgr, "ScriptStorage::getScriptInfoService: cannot get drafts.com.sun.star.script.framework.storage.ScriptInfo");
|
||||
pScriptInfo[ count ] = Reference< storage::XScriptInfo >(xx, UNO_QUERY_THROW );
|
||||
sr_xScriptInfo[ count ] = Reference< storage::XScriptInfo >(xx, UNO_QUERY_THROW );
|
||||
count++;
|
||||
}
|
||||
|
||||
return sr_xScriptInfo;
|
||||
}
|
||||
|
||||
//XNamingAccess
|
||||
/**
|
||||
Reference<XInterface> ScriptStorage::getView(
|
||||
const ::rtl::OUString& viewName )
|
||||
throw (storage::NoSuchView,
|
||||
RuntimeException)
|
||||
{
|
||||
}
|
||||
*/
|
||||
|
||||
//*************************************************************************
|
||||
Sequence< Reference< scripturi::XScriptURI > >
|
||||
ScriptStorage::getImplementations( const Reference<
|
||||
scripturi::XScriptURI >& queryURI )
|
||||
throw (lang::IllegalArgumentException,
|
||||
RuntimeException)
|
||||
{
|
||||
::osl::Guard< osl::Mutex > aGuard( m_mutex );
|
||||
Sequence< Reference< scripturi::XScriptURI > > results;
|
||||
try
|
||||
{
|
||||
//find the implementations for the given logical name
|
||||
ScriptInfo_hash::iterator h_it = mh_implementations.find(queryURI->getLogicalName());
|
||||
if(h_it!=mh_implementations.end())
|
||||
{
|
||||
Impls_vec::iterator it_impls =h_it->second.begin();
|
||||
Impls_vec::iterator it_impls_end =h_it->second.end();
|
||||
for(sal_Int32 count=0;it_impls!=it_impls_end;++it_impls)
|
||||
{
|
||||
//should we do any resolution here?????
|
||||
// or leave it completely up to the resolver?
|
||||
//construct new Reference<scripturi::ScriptURI>
|
||||
Sequence<Any> aArgs(2);
|
||||
aArgs[0]<<=*it_impls;
|
||||
aArgs[1]<<=m_scriptStorageID;
|
||||
|
||||
validateXRef(m_xContext, "ScriptStorage::getImplementations: No context available");
|
||||
Reference< lang::XMultiComponentFactory > xMgr = m_xContext->getServiceManager();
|
||||
validateXRef(xMgr, "ScriptStorage::getImplementations: No service manager available");
|
||||
Reference< XInterface > xx = xMgr->createInstanceWithArgumentsAndContext(OUString::createFromAscii("drafts.com.sun.star.script.framework.scripturi.ScriptURI"), aArgs, m_xContext );
|
||||
validateXRef(xMgr, "ScriptStorage::getImplementations: cannot get drafts.com.sun.star.script.framework.storage.ScriptInfo");
|
||||
Reference<scripturi::XScriptURI> uri(xx,UNO_QUERY_THROW);
|
||||
//add to the sequence
|
||||
//assuming that we'll usually only get 1 elt returned
|
||||
//first realloc if we get 2 elts...
|
||||
if(count>=results.getLength())
|
||||
{
|
||||
results.realloc(results.getLength()+1);
|
||||
}
|
||||
results[count++]=uri;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptStorage::getImplementations Exception: ")+e.Message,
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptStorage::prepareForInvocation( const OUString& parcelURI ) throw (RuntimeException)
|
||||
{
|
||||
try
|
||||
{
|
||||
validateXRef(m_xSimpleFileAccess,
|
||||
"ScriptStorage::prepareForInvocation(): no SimpleFileAccess");
|
||||
|
||||
if ((m_xSimpleFileAccess->exists(parcelURI) != sal_True) ||
|
||||
(m_xSimpleFileAccess->isFolder(parcelURI) != sal_True))
|
||||
{
|
||||
throw RuntimeException(
|
||||
OUSTR("ScriptStorage::prepareForInvocation(): parcel URI is not valid"),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
|
||||
OUString dest = OUString::createFromAscii("file:///tmp");
|
||||
sal_Int32 idx = parcelURI.lastIndexOf('/');
|
||||
sal_Int32 len = parcelURI.getLength();
|
||||
if (idx == (len-1))
|
||||
{
|
||||
// deal with the trailing separator
|
||||
idx = parcelURI.lastIndexOf('/', len-2);
|
||||
OUString parcel_base = parcelURI.copy(idx, len-idx-1);
|
||||
dest = dest.concat(parcel_base);
|
||||
}
|
||||
else
|
||||
{
|
||||
dest = dest.concat(parcelURI.copy(idx));
|
||||
}
|
||||
dest = dest.concat(OUString::valueOf((sal_Int32)m_scriptStorageID));
|
||||
|
||||
fprintf(stderr,"dest is: %s\n",rtl::OUStringToOString(dest, RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
|
||||
copyFolder(parcelURI, dest);
|
||||
|
||||
return dest;
|
||||
}
|
||||
catch(RuntimeException &e)
|
||||
{
|
||||
OUString temp = OUSTR(
|
||||
"ScriptStorage::prepareForInvocation RuntimeException: ");
|
||||
throw RuntimeException(temp.concat(e.Message),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUSTR(
|
||||
"ScriptStorage::prepareForInvocation UnknownException: "),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/**
|
||||
* This function copies the contents of the source folder into the
|
||||
* destination folder. If the destination folder does not exist, it
|
||||
* is created. If the destination folder exists, it is deleted and then
|
||||
* created. All URIs supported by the relevant XSimpleFileAccess
|
||||
* implementation are supported.
|
||||
*/
|
||||
void ScriptStorage::copyFolder(const OUString &src, const OUString &dest) throw (RuntimeException)
|
||||
{
|
||||
try
|
||||
{
|
||||
OUString new_dest;
|
||||
sal_Int32 idx;
|
||||
|
||||
/* A mutex guard is needed to not write later into
|
||||
* a folder that has been deleted by an incoming thread.
|
||||
* Note that this calls into the SimpleFileAccess service
|
||||
* with a locked mutex, but the implementation of this method
|
||||
* will probably change soon.
|
||||
*/
|
||||
::osl::Guard< osl::Mutex > aGuard( m_mutex );
|
||||
|
||||
if (m_xSimpleFileAccess->isFolder(dest) == sal_True)
|
||||
{
|
||||
m_xSimpleFileAccess->kill(dest);
|
||||
}
|
||||
m_xSimpleFileAccess->createFolder(dest);
|
||||
|
||||
Sequence <OUString> seq = m_xSimpleFileAccess->getFolderContents(
|
||||
src, sal_True);
|
||||
sal_Int32 len = seq.getLength();
|
||||
for(int i = 0; i < len; i++)
|
||||
{
|
||||
new_dest = dest;
|
||||
idx = seq[i].lastIndexOf('/');
|
||||
new_dest = new_dest.concat(seq[i].copy(idx));
|
||||
|
||||
if (m_xSimpleFileAccess->isFolder(seq[i]) == sal_True)
|
||||
{
|
||||
copyFolder(seq[i], new_dest);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_xSimpleFileAccess->copy(seq[i], new_dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(ucb::CommandAbortedException &e)
|
||||
{
|
||||
OUString temp = OUSTR(
|
||||
"ScriptStorage::copyFolder CommandAbortedException: ");
|
||||
throw RuntimeException(temp.concat(e.Message),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
catch(RuntimeException &e)
|
||||
{
|
||||
OUString temp = OUSTR("ScriptStorage::copyFolder RuntimeException: ");
|
||||
throw RuntimeException(temp.concat(e.Message),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
catch(Exception &e)
|
||||
{
|
||||
OUString temp = OUSTR("ScriptStorage::copyFolder Exception: ");
|
||||
throw RuntimeException(temp.concat(e.Message),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#ifdef _DEBUG
|
||||
catch ( ... )
|
||||
{
|
||||
throw RuntimeException(OUSTR(
|
||||
"ScriptStorage::copyFolder UnknownException: "),
|
||||
Reference<XInterface> ());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptStorage::getImplementationName( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return ss_implName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
sal_Bool SAL_CALL ScriptStorage::supportsService( const OUString& serviceName )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
OUString const * pNames = ss_serviceNames.getConstArray();
|
||||
for ( sal_Int32 nPos = ss_serviceNames.getLength(); nPos--; )
|
||||
{
|
||||
if (serviceName.equals( pNames[ nPos ] ))
|
||||
{
|
||||
return sal_True;
|
||||
}
|
||||
}
|
||||
return sal_False;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Sequence<OUString> SAL_CALL ScriptStorage::getSupportedServiceNames( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return ss_serviceNames;
|
||||
}
|
||||
//*************************************************************************
|
||||
Reference<XInterface> SAL_CALL ss_create(
|
||||
const Reference< XComponentContext > & xCompC )
|
||||
{
|
||||
return ( cppu::OWeakObject * ) new ScriptStorage( xCompC );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Sequence<OUString> ss_getSupportedServiceNames( )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
return ss_serviceNames;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString ss_getImplementationName( )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
return ss_implName;
|
||||
}
|
||||
}
|
246
scripting/source/storage/ScriptStorage.hxx
Normal file
246
scripting/source/storage/ScriptStorage.hxx
Normal file
@@ -0,0 +1,246 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptStorage.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:52 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
#ifndef __SCRIPTING_STORAGE_SCRIPTSTORAGE_HXX_
|
||||
#define __SCRIPTING_STORAGE_SCRIPTSTORAGE_HXX_
|
||||
|
||||
#include <vector>
|
||||
#include <hash_map>
|
||||
|
||||
#include <osl/mutex.hxx>
|
||||
#include <cppuhelper/implbase6.hxx> // helper for component factory
|
||||
|
||||
#include <com/sun/star/uno/XComponentContext.hpp>
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XInitialization.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptAccessManager.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptImplAccess.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptStorageExport.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/ScriptImplInfo.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptInfo.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/NoSuchView.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/scripturi/XScriptURI.hpp>
|
||||
#include <com/sun/star/io/XInputStream.hpp>
|
||||
#include <com/sun/star/io/XOutputStream.hpp>
|
||||
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
|
||||
#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XParcelInvocationPrep.hpp>
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
//Typedefs
|
||||
//=============================================================================
|
||||
typedef ::std::vector< ::drafts::com::sun::star::script::framework::storage::ScriptImplInfo >
|
||||
Impls_vec;
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef ::std::hash_map < ::rtl::OUString, Impls_vec,
|
||||
::rtl::OUStringHash, ::std::equal_to< ::rtl::OUString > >
|
||||
ScriptInfo_hash;
|
||||
//-----------------------------------------------------------------------------
|
||||
typedef ::std::hash_map < ::rtl::OUString,
|
||||
::com::sun::star::uno::Reference<
|
||||
::com::sun::star::xml::sax::XExtendedDocumentHandler >,
|
||||
::rtl::OUStringHash, ::std::equal_to< ::rtl::OUString > >
|
||||
ScriptOutput_hash;
|
||||
//=============================================================================
|
||||
|
||||
class ScriptStorage
|
||||
: public ::cppu::WeakImplHelper6<
|
||||
::com::sun::star::lang::XServiceInfo,
|
||||
::com::sun::star::lang::XInitialization,
|
||||
::drafts::com::sun::star::script::framework::storage::XScriptImplAccess,
|
||||
::drafts::com::sun::star::script::framework::storage::XScriptStorageExport,
|
||||
::drafts::com::sun::star::script::framework::storage::XScriptAccessManager,
|
||||
::drafts::com::sun::star::script::framework::storage::XParcelInvocationPrep >
|
||||
{
|
||||
// private member
|
||||
private:
|
||||
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess > m_xSimpleFileAccess;
|
||||
|
||||
::std::vector < ::rtl::OUString > mv_logicalNames;
|
||||
ScriptInfo_hash mh_implementations;
|
||||
ScriptOutput_hash mh_parcels;
|
||||
sal_uInt16 m_scriptStorageID;
|
||||
|
||||
osl::Mutex m_mutex;
|
||||
|
||||
void updateMaps(Impls_vec vScriptII);
|
||||
void writeMetadataHeader(::com::sun::star::uno::Reference < ::com::sun::star::xml::sax::XExtendedDocumentHandler > & );
|
||||
void copyFolder(const ::rtl::OUString & src, const ::rtl::OUString & dest) throw (::com::sun::star::uno::RuntimeException);
|
||||
|
||||
public:
|
||||
//Constructors and Destructors
|
||||
//=========================================================================
|
||||
explicit ScriptStorage( const ::com::sun::star::uno::Reference<
|
||||
::com::sun::star::uno::XComponentContext >& );
|
||||
//-------------------------------------------------------------------------
|
||||
virtual ~ScriptStorage() SAL_THROW( () );
|
||||
//=========================================================================
|
||||
|
||||
// XServiceInfo impl
|
||||
//=========================================================================
|
||||
virtual ::rtl::OUString SAL_CALL getImplementationName()
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
//-------------------------------------------------------------------------
|
||||
virtual sal_Bool SAL_CALL supportsService(
|
||||
const ::rtl::OUString & ServiceName )
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
//-------------------------------------------------------------------------
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >
|
||||
SAL_CALL getSupportedServiceNames()
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
//-------------------------------------------------------------------------
|
||||
static ::com::sun::star::uno::Sequence< ::rtl::OUString >
|
||||
SAL_CALL getSupportedServiceNames_Static();
|
||||
//=========================================================================
|
||||
|
||||
// XInitialization impl
|
||||
//=========================================================================
|
||||
virtual void SAL_CALL initialize( ::com::sun::star::uno::Sequence
|
||||
< ::com::sun::star::uno::Any > const & args )
|
||||
throw (::com::sun::star::uno::Exception);
|
||||
//=========================================================================
|
||||
|
||||
// XScriptAccessManager impl
|
||||
//=========================================================================
|
||||
/**
|
||||
* Gets the sequence of XScriptInfo interfaces for the corresponding
|
||||
* logical name that is passed in
|
||||
*
|
||||
* @param name
|
||||
* The logical name of the script
|
||||
*
|
||||
* @return Sequence< XScriptInfo >
|
||||
* A sequence of XScriptInfos which represent the implementations
|
||||
* of the passed in logical name
|
||||
*/
|
||||
virtual ::com::sun::star::uno::Sequence<
|
||||
::com::sun::star::uno::Reference<
|
||||
::drafts::com::sun::star::script::framework::storage::XScriptInfo > >
|
||||
SAL_CALL getScriptInfoService( const ::rtl::OUString & name )
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
//=========================================================================
|
||||
|
||||
//XScriptImplAccess
|
||||
//=========================================================================
|
||||
/**
|
||||
* Get the implementations for a given URI
|
||||
*
|
||||
* @param queryURI
|
||||
* The URI to get the implementations for
|
||||
*
|
||||
* @return XScriptURI
|
||||
* The URIs of the implementations
|
||||
*/
|
||||
virtual ::com::sun::star::uno::Sequence<
|
||||
::com::sun::star::uno::Reference<
|
||||
::drafts::com::sun::star::script::framework::scripturi::XScriptURI > >
|
||||
SAL_CALL getImplementations( const ::com::sun::star::uno::Reference<
|
||||
::drafts::com::sun::star::script::framework::scripturi::XScriptURI >& queryURI )
|
||||
throw (::com::sun::star::lang::IllegalArgumentException,
|
||||
::com::sun::star::uno::RuntimeException);
|
||||
//=========================================================================
|
||||
|
||||
|
||||
//XNamingAccess
|
||||
//=========================================================================
|
||||
/**
|
||||
* Get a certain type of view of the naming heirarchy
|
||||
*
|
||||
* @param viewName
|
||||
* The view name
|
||||
*
|
||||
* @return XInterface
|
||||
* The view of the hierarchy
|
||||
*/
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
|
||||
ScriptStorage::getView( const ::rtl::OUString& viewName )
|
||||
throw (::drafts::com::sun::star::script::framework::storage::NoSuchView,
|
||||
::com::sun::star::uno::RuntimeException);
|
||||
//=========================================================================
|
||||
|
||||
// XScriptStorageExport
|
||||
void SAL_CALL save()
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
//=========================================================================
|
||||
|
||||
//XParcelInvocationPrep
|
||||
//=========================================================================
|
||||
/**
|
||||
* Prepare a pracel for invocation
|
||||
* @param parcelURI
|
||||
* URI to the parcel to be prepared
|
||||
*
|
||||
* @return ::rtl::OUString
|
||||
* URI to the prepared parcel
|
||||
*/
|
||||
|
||||
::rtl::OUString SAL_CALL prepareForInvocation( const ::rtl::OUString& parcelURI )
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
//=========================================================================
|
||||
}
|
||||
; // class ScriptingStorage
|
||||
|
||||
}
|
||||
|
||||
#endif
|
354
scripting/source/storage/ScriptStorageManager.cxx
Normal file
354
scripting/source/storage/ScriptStorageManager.cxx
Normal file
@@ -0,0 +1,354 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptStorageManager.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:52 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <cppuhelper/implementationentry.hxx>
|
||||
#include <sal/config.h>
|
||||
#include <util/util.hxx>
|
||||
|
||||
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
|
||||
#include <com/sun/star/util/XMacroExpander.hpp>
|
||||
#include <com/sun/star/lang/XComponent.hpp>
|
||||
#include <com/sun/star/lang/XMultiComponentFactory.hpp>
|
||||
|
||||
#include "ScriptStorageManager.hxx"
|
||||
#include <util/util.hxx>
|
||||
|
||||
using namespace ::rtl;
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::drafts::com::sun::star::script::framework;
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
static const sal_Char* const SERVICENAME="drafts.com.sun.star.script.framework.storage.ScriptStorageManager";
|
||||
static const sal_Char* const IMPLNAME="drafts.com.sun.star.script.framework.storage.ScriptStorageManager";
|
||||
|
||||
static OUString s_implName = ::rtl::OUString::createFromAscii(IMPLNAME);
|
||||
static OUString s_serviceName = ::rtl::OUString::createFromAscii(SERVICENAME);
|
||||
static Sequence< OUString > s_serviceNames = Sequence< OUString >( &s_serviceName, 1 );
|
||||
|
||||
::rtl_StandardModuleCount s_moduleCount = MODULE_COUNT_INIT;
|
||||
|
||||
//*************************************************************************
|
||||
// ScriptStorageManager Constructor
|
||||
ScriptStorageManager::ScriptStorageManager(const Reference< XComponentContext > & xContext)
|
||||
: m_xContext( xContext )
|
||||
{
|
||||
OSL_TRACE( "< ScriptStorageManager ctor called >\n" );
|
||||
s_moduleCount.modCnt.acquire( &s_moduleCount.modCnt );
|
||||
try
|
||||
{
|
||||
count=0;
|
||||
// obtain the macro expander singleton to use in determining the
|
||||
// location of the application script storage
|
||||
Any aAny = m_xContext->getValueByName(OUString::createFromAscii("/singletons/com.sun.star.util.theMacroExpander"));
|
||||
Reference<util::XMacroExpander> xME;
|
||||
OSL_ASSERT(sal_False!=(aAny>>=xME));
|
||||
OSL_ASSERT(xME.is());
|
||||
validateXRef(xME,"ScriptStorageManager constructor: Can't get MacroExpander");
|
||||
|
||||
// get the MultiComponentFactory and use it to create a
|
||||
// SimpleFileAccess component
|
||||
Reference<lang::XMultiComponentFactory> xMCF = m_xContext->getServiceManager();
|
||||
validateXRef(xMCF,"ScriptStorageManager::ScriptStorageManager : cannot get service manager");
|
||||
Reference<XInterface> xx = xMCF->createInstanceWithContext(OUString::createFromAscii("com.sun.star.ucb.SimpleFileAccess"), m_xContext);
|
||||
Reference<ucb::XSimpleFileAccess> xSFA(xx,UNO_QUERY);
|
||||
|
||||
// create a ScriptingStorage using the SimpleFileAccess, the storageID // (from the count), and the URL to the application's shared area
|
||||
Sequence <Any> aArgs(3);
|
||||
OUString base=OUString::createFromAscii( SAL_CONFIGFILE("${$SYSBINDIR/bootstrap"));
|
||||
aArgs[0] <<= xSFA;
|
||||
aArgs[1] <<= count;
|
||||
aArgs[2] <<= xME->expandMacros(base.concat(OUString::createFromAscii("::BaseInstallation}/share")));
|
||||
#ifdef _DEBUG
|
||||
|
||||
fprintf(stderr,"creating storage for: %s\n",::rtl::OUStringToOString(xME->expandMacros(base.concat(OUString::createFromAscii("::BaseInstallation}/share"))),RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
xx = xMCF->createInstanceWithArgumentsAndContext(OUString::createFromAscii("drafts.com.sun.star.script.framework.storage.ScriptStorage"), aArgs, m_xContext);
|
||||
OSL_ASSERT(xx.is());
|
||||
xx->acquire();
|
||||
validateXRef(xx,"ScriptStorageManager constructor: Can't create ScriptStorage for share");
|
||||
// and place it in the hash_map. Increment the counter
|
||||
m_ScriptStorageHash[count++]=xx;
|
||||
#ifdef _DEBUG
|
||||
|
||||
fprintf(stderr,"\tcreated with ID=%d\n",count-1);
|
||||
#endif
|
||||
//Repeat the procedure with the application user area
|
||||
aArgs[1] <<= count;
|
||||
aArgs[2] <<= xME->expandMacros(base.concat(OUString::createFromAscii("::UserInstallation}/user")));
|
||||
#ifdef _DEBUG
|
||||
|
||||
fprintf(stderr,"creating storage for: %s\n",::rtl::OUStringToOString(xME->expandMacros(base.concat(OUString::createFromAscii("::UserInstallation}/user"))),RTL_TEXTENCODING_ASCII_US).pData->buffer);
|
||||
#endif
|
||||
|
||||
xx = xMCF->createInstanceWithArgumentsAndContext(OUString::createFromAscii("drafts.com.sun.star.script.framework.storage.ScriptStorage"), aArgs, m_xContext);
|
||||
OSL_ASSERT(xx.is());
|
||||
xx->acquire();
|
||||
validateXRef(xx,"ScriptStorageManager constructor: Can't create ScriptStorage for share");
|
||||
m_ScriptStorageHash[count++]=xx;
|
||||
#ifdef _DEBUG
|
||||
|
||||
fprintf(stderr,"\tcreated with ID=%d\n",count-1);
|
||||
#endif
|
||||
|
||||
}
|
||||
catch (Exception &e)
|
||||
{
|
||||
throw RuntimeException(OUSTR("ScriptStorageManager::ScriptStorageManager: ") + e.Message, Reference< XInterface >());
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// ScriptStorageManager Destructor
|
||||
ScriptStorageManager::~ScriptStorageManager()
|
||||
{
|
||||
OSL_TRACE( "< ScriptStorageManager dtor called >\n" );
|
||||
s_moduleCount.modCnt.release( &s_moduleCount.modCnt );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// This method assumes that the XSimpleFileAccess knows it's on root URL
|
||||
// and can be used with relative URLs
|
||||
sal_uInt16 SAL_CALL ScriptStorageManager::createScriptStorage( const Reference< ucb::XSimpleFileAccess >& xSFA ) throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("** ==> ScriptStorageManager in createScriptingStorage\n");
|
||||
validateXRef(xSFA, "ScriptStorageManager::createScriptStorage: XSimpleFileAccess is not valid");
|
||||
Sequence <Any> aArgs(2);
|
||||
aArgs[0] <<= xSFA;
|
||||
aArgs[1] <<= count;
|
||||
Reference<lang::XMultiComponentFactory> xMCF = m_xContext->getServiceManager();
|
||||
validateXRef(xMCF,"ScriptStorageManager::createScriptStorage");
|
||||
Reference<XInterface>xx = xMCF->createInstanceWithArgumentsAndContext(OUString::createFromAscii("drafts.com.sun.star.script.framework.storage.ScriptStorage"), aArgs, m_xContext);
|
||||
OSL_ASSERT(xx.is());
|
||||
m_ScriptStorageHash[count++]=xx;
|
||||
#ifdef _DEBUG
|
||||
|
||||
fprintf(stderr,"\tcreated with ID=%d\n",count-1);
|
||||
#endif
|
||||
|
||||
return count-1;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
sal_uInt16 SAL_CALL ScriptStorageManager::createScriptStorageWithURI( const Reference< ucb::XSimpleFileAccess >& xSFA, const OUString & stringURI ) throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("** ==> ScriptStorageManager in createScriptingStorageWithURI\n");
|
||||
validateXRef(xSFA, "ScriptStorageManager::createScriptStorage: XSimpleFileAccess is not valid");
|
||||
Sequence <Any> aArgs(3);
|
||||
aArgs[0] <<= xSFA;
|
||||
aArgs[1] <<= count;
|
||||
aArgs[2] <<= stringURI;
|
||||
Reference<lang::XMultiComponentFactory> xMCF = m_xContext->getServiceManager();
|
||||
validateXRef(xMCF,"ScriptStorageManager::createScriptStorageWithURI");
|
||||
Reference<XInterface> xx = xMCF->createInstanceWithArgumentsAndContext(OUString::createFromAscii("drafts.com.sun.star.script.framework.storage.ScriptStorage"), aArgs, m_xContext);
|
||||
OSL_ASSERT(xx.is());
|
||||
m_ScriptStorageHash[count++]=xx;
|
||||
#ifdef _DEBUG
|
||||
|
||||
fprintf(stderr,"\tcreated with ID=%d\n",count-1);
|
||||
#endif
|
||||
|
||||
return count-1;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Reference <XInterface> SAL_CALL ScriptStorageManager::getScriptStorage(sal_uInt16 scriptStorageID)
|
||||
throw(RuntimeException)
|
||||
{
|
||||
OSL_TRACE("** ==> ScriptStorageManager in getStorageInstance\n");
|
||||
Reference<XInterface> result=m_ScriptStorageHash[scriptStorageID];
|
||||
validateXRef(result, "ScriptStorageManager::getScriptStorage: Cannot get ScriptStorage from ScriptStorageHash");
|
||||
return result;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString SAL_CALL ScriptStorageManager::getImplementationName( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return s_implName;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
sal_Bool SAL_CALL ScriptStorageManager::supportsService( const OUString& serviceName )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
OUString const * pNames = s_serviceNames.getConstArray();
|
||||
for ( sal_Int32 nPos = s_serviceNames.getLength(); nPos--; )
|
||||
{
|
||||
if (serviceName.equals( pNames[ nPos ] ))
|
||||
{
|
||||
return sal_True;
|
||||
}
|
||||
}
|
||||
return sal_False;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Sequence<OUString> SAL_CALL ScriptStorageManager::getSupportedServiceNames( )
|
||||
throw(RuntimeException)
|
||||
{
|
||||
return s_serviceNames;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void SAL_CALL ScriptStorageManager::disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException)
|
||||
{
|
||||
OSL_TRACE("ScriptStorageManager::disposing started");
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
static Reference<XInterface> SAL_CALL ssm_create(
|
||||
const Reference< XComponentContext > & xCompC )
|
||||
{
|
||||
return (cppu::OWeakObject *)new ScriptStorageManager( xCompC );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
static Sequence<OUString> ssm_getSupportedServiceNames( )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
return s_serviceNames;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
static OUString ssm_getImplementationName( )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
return s_implName;
|
||||
}
|
||||
//*************************************************************************
|
||||
Reference<XInterface> SAL_CALL ss_create( const Reference< XComponentContext > & xCompC );
|
||||
//*************************************************************************
|
||||
Sequence<OUString> ss_getSupportedServiceNames( ) SAL_THROW( () );
|
||||
//*************************************************************************
|
||||
OUString ss_getImplementationName( ) SAL_THROW( () );
|
||||
//*************************************************************************
|
||||
Reference<XInterface> SAL_CALL si_create( const Reference< XComponentContext > & xCompC );
|
||||
//*************************************************************************
|
||||
Sequence<OUString> si_getSupportedServiceNames( ) SAL_THROW( () );
|
||||
//*************************************************************************
|
||||
OUString si_getImplementationName( ) SAL_THROW( () );
|
||||
//*************************************************************************
|
||||
static struct cppu::ImplementationEntry s_entries [] =
|
||||
{
|
||||
{
|
||||
ssm_create, ssm_getImplementationName,
|
||||
ssm_getSupportedServiceNames, cppu::createSingleComponentFactory,
|
||||
&s_moduleCount.modCnt, 0
|
||||
},
|
||||
{
|
||||
ss_create, ss_getImplementationName,
|
||||
ss_getSupportedServiceNames, cppu::createSingleComponentFactory,
|
||||
&s_moduleCount.modCnt, 0
|
||||
},
|
||||
{
|
||||
si_create, si_getImplementationName,
|
||||
si_getSupportedServiceNames, cppu::createSingleComponentFactory,
|
||||
&s_moduleCount.modCnt, 0
|
||||
},
|
||||
{ 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
} // Namespace
|
||||
|
||||
//##################################################################################################
|
||||
//#### EXPORTED ####################################################################################
|
||||
//##################################################################################################
|
||||
|
||||
/**
|
||||
* Gives the environment this component belongs to.
|
||||
*/
|
||||
extern "C"
|
||||
{
|
||||
void SAL_CALL component_getImplementationEnvironment(const sal_Char ** ppEnvTypeName, uno_Environment ** ppEnv)
|
||||
{
|
||||
*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
|
||||
*/
|
||||
sal_Bool SAL_CALL component_writeInfo(lang::XMultiServiceFactory * pServiceManager, registry::XRegistryKey * pRegistryKey)
|
||||
{
|
||||
return ::cppu::component_writeInfoHelper(pServiceManager, pRegistryKey, ::scripting_impl::s_entries);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* @param pRegistryKey the registry key for this component, need for persistent data
|
||||
* @return a component factory
|
||||
*/
|
||||
void * SAL_CALL component_getFactory(const sal_Char * pImplName, lang::XMultiServiceFactory * pServiceManager, registry::XRegistryKey * pRegistryKey)
|
||||
{
|
||||
return ::cppu::component_getFactoryHelper(pImplName, pServiceManager, pRegistryKey, ::scripting_impl::s_entries);
|
||||
}
|
||||
}
|
155
scripting/source/storage/ScriptStorageManager.hxx
Normal file
155
scripting/source/storage/ScriptStorageManager.hxx
Normal file
@@ -0,0 +1,155 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: ScriptStorageManager.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:54 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
|
||||
#ifndef _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_STORAGE_SCRIPTSTORAGEMANAGER_HXX_
|
||||
#define _DRAFTS_COM_SUN_STAR_SCRIPT_FRAMEWORK_STORAGE_SCRIPTSTORAGEMANAGER_HXX_
|
||||
|
||||
#include <osl/mutex.hxx>
|
||||
#include <hash_map>
|
||||
|
||||
#include <cppuhelper/implbase3.hxx>
|
||||
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XEventListener.hpp>
|
||||
#include <com/sun/star/uno/RuntimeException.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/scripturi/XScriptURI.hpp>
|
||||
#include <drafts/com/sun/star/script/framework/storage/XScriptStorageManager.hpp>
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
// Define a hash_map used to store the ScriptingStorages key;d by ID
|
||||
typedef ::std::hash_map < sal_Int16, ::com::sun::star::uno::Reference < ::com::sun::star::uno::XInterface > > ScriptStorage_hash;
|
||||
|
||||
class ScriptStorageManager : public ::cppu::WeakImplHelper3< ::drafts::com::sun::star::script::framework::storage::XScriptStorageManager, ::com::sun::star::lang::XServiceInfo, ::com::sun::star::lang::XEventListener>
|
||||
{
|
||||
// to obtain other services if needed
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
|
||||
::osl::Mutex m_mutex;
|
||||
ScriptStorage_hash m_ScriptStorageHash;
|
||||
sal_Int16 count;
|
||||
public:
|
||||
ScriptStorageManager( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > & xContext );
|
||||
~ScriptStorageManager();
|
||||
|
||||
|
||||
// XServiceInfo implementation
|
||||
//======================================================================
|
||||
virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
|
||||
//----------------------------------------------------------------------
|
||||
virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
|
||||
//----------------------------------------------------------------------
|
||||
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
|
||||
//======================================================================
|
||||
|
||||
//XScriptStorageManager
|
||||
//======================================================================
|
||||
/**
|
||||
create a ScriptStorage using the XSimpleFileAccess passed as an
|
||||
argument, and return a ID for getting the associated ScriptStorage
|
||||
|
||||
@params xSFA
|
||||
an implementation of XSimpleFileAccess that knows its own base URL
|
||||
and can thus take URLs relative to that base.
|
||||
|
||||
@returns an unsigned short ScriptStorage ID, which can be used in the
|
||||
getScriptStorage method
|
||||
*/
|
||||
virtual sal_uInt16 SAL_CALL createScriptStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xSFA ) throw (::com::sun::star::uno::RuntimeException);
|
||||
//----------------------------------------------------------------------
|
||||
/**
|
||||
create a ScriptStorage using the XSimpleFileAccess, and a string URL
|
||||
and return a ID for getting the associated ScriptStorage
|
||||
|
||||
@params xSFA
|
||||
a standard implementation of XSimpleFileAccess
|
||||
|
||||
@params stringURI
|
||||
a string URI to the head of the script storage
|
||||
|
||||
@returns an unsigned short ScriptStorage ID, which can be used in the
|
||||
getScriptStorage method
|
||||
*/
|
||||
virtual sal_uInt16 SAL_CALL createScriptStorageWithURI( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xSFA, const ::rtl::OUString& stringURI ) throw (::com::sun::star::uno::RuntimeException);
|
||||
//----------------------------------------------------------------------
|
||||
/**
|
||||
get a ScriptStorage component using its scriptStorageID
|
||||
|
||||
@params scriptStorageID
|
||||
the usigned short returned by one of the methods above. ID=0 is
|
||||
reserved for the application/share scripts, and ID=1 is reserved
|
||||
for the application/user scripts
|
||||
|
||||
@returns an XInterface to a component that implements the ScriptStorage
|
||||
service
|
||||
*/
|
||||
virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getScriptStorage( sal_uInt16 scriptStorageID ) throw (::com::sun::star::uno::RuntimeException);
|
||||
//======================================================================
|
||||
|
||||
|
||||
//XEventListener
|
||||
//======================================================================
|
||||
virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
|
||||
};
|
||||
} // scripting_impl
|
||||
|
||||
#endif //_COM_SUN_STAR_SCRIPTING_STORAGE_SCRIPTSTORAGEMANAGER_HXX_
|
196
scripting/source/storage/XMLElement.cxx
Normal file
196
scripting/source/storage/XMLElement.cxx
Normal file
@@ -0,0 +1,196 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: XMLElement.cxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:54 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
#include "XMLElement.hxx"
|
||||
#include <osl/diagnose.h>
|
||||
|
||||
using namespace rtl;
|
||||
using namespace com::sun::star;
|
||||
using namespace com::sun::star::uno;
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
//*************************************************************************
|
||||
void XMLElement::addAttribute( OUString const & rAttrName, OUString const & rValue )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
OSL_TRACE("XMLElement::addAttribute\n");
|
||||
|
||||
_attrNames.push_back( rAttrName );
|
||||
_attrValues.push_back( rValue );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void XMLElement::addSubElement( Reference< xml::sax::XAttributeList > const & xElem )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
OSL_TRACE("XMLElement::addSubElement\n");
|
||||
|
||||
_subElems.push_back( xElem );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
Reference< xml::sax::XAttributeList > XMLElement::getSubElement( sal_Int32 nIndex )
|
||||
SAL_THROW( () )
|
||||
{
|
||||
OSL_TRACE("XMLElement::getSubElement\n");
|
||||
|
||||
return _subElems[ (size_t)nIndex ];
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void XMLElement::dumpSubElements( Reference< xml::sax::XExtendedDocumentHandler > const & xOut )
|
||||
{
|
||||
OSL_TRACE("+++++ XMLElement::dumpSubElement\n");
|
||||
|
||||
for ( size_t nPos = 0; nPos < _subElems.size(); ++nPos )
|
||||
{
|
||||
XMLElement * pElem = static_cast< XMLElement * >( _subElems[ nPos ].get() );
|
||||
pElem->dump( xOut );
|
||||
}
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
void XMLElement::dump( Reference< xml::sax::XExtendedDocumentHandler > const & xOut )
|
||||
{
|
||||
OSL_TRACE("XMLElement::dump\n");
|
||||
|
||||
xOut->ignorableWhitespace( OUString() );
|
||||
xOut->startElement( _name, static_cast< xml::sax::XAttributeList * >( this ) );
|
||||
// Write out CDATA
|
||||
if(_chars.getLength() > 0)
|
||||
{
|
||||
xOut->ignorableWhitespace( OUString() );
|
||||
xOut->characters( _chars );
|
||||
}
|
||||
// write sub elements
|
||||
dumpSubElements( xOut );
|
||||
xOut->ignorableWhitespace( OUString() );
|
||||
xOut->endElement( _name );
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
// XAttributeList
|
||||
sal_Int16 XMLElement::getLength()
|
||||
throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("XMLElement::getLength\n");
|
||||
|
||||
return _attrNames.size();
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString XMLElement::getNameByIndex( sal_Int16 nPos )
|
||||
throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("XMLElement::getNameByIndex\n");
|
||||
OSL_ASSERT( (size_t)nPos < _attrNames.size() );
|
||||
|
||||
return _attrNames[ nPos ];
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString XMLElement::getTypeByIndex( sal_Int16 nPos )
|
||||
throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("XMLElement::getTypeByIndex\n");
|
||||
OSL_ASSERT( (size_t)nPos < _attrNames.size() );
|
||||
|
||||
// xxx todo
|
||||
return OUString();
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString XMLElement::getTypeByName( OUString const & rName )
|
||||
throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("XMLElement::getTypeByName\n");
|
||||
// xxx todo
|
||||
return OUString();
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString XMLElement::getValueByIndex( sal_Int16 nPos )
|
||||
throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("XMLElement::getValueByIndex\n");
|
||||
OSL_ASSERT( (size_t)nPos < _attrNames.size() );
|
||||
|
||||
return _attrValues[ nPos ];
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
OUString XMLElement::getValueByName( OUString const & rName )
|
||||
throw (RuntimeException)
|
||||
{
|
||||
OSL_TRACE("XMLElement::getValueByName\n");
|
||||
|
||||
for ( size_t nPos = 0; nPos < _attrNames.size(); ++nPos )
|
||||
{
|
||||
if (_attrNames[ nPos ] == rName)
|
||||
{
|
||||
return _attrValues[ nPos ];
|
||||
}
|
||||
}
|
||||
return OUString();
|
||||
}
|
||||
|
||||
}
|
170
scripting/source/storage/XMLElement.hxx
Normal file
170
scripting/source/storage/XMLElement.hxx
Normal file
@@ -0,0 +1,170 @@
|
||||
/*************************************************************************
|
||||
*
|
||||
* $RCSfile: XMLElement.hxx,v $
|
||||
*
|
||||
* $Revision: 1.1 $
|
||||
*
|
||||
* last change: $Author: dfoster $ $Date: 2002-09-20 14:33:55 $
|
||||
*
|
||||
* 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): _______________________________________
|
||||
*
|
||||
*
|
||||
************************************************************************/
|
||||
#ifndef _SCRIPTING_XML_ELEMENT_HXX_
|
||||
#define _SCRIPTING_XML_ELEMENT_HXX_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <cppuhelper/implbase1.hxx>
|
||||
|
||||
#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
|
||||
|
||||
namespace scripting_impl
|
||||
{
|
||||
|
||||
/*##################################################################################################
|
||||
|
||||
EXPORTING
|
||||
|
||||
##################################################################################################*/
|
||||
|
||||
//==================================================================================================
|
||||
class XMLElement
|
||||
: public ::cppu::WeakImplHelper1< ::com::sun::star::xml::sax::XAttributeList >
|
||||
{
|
||||
public:
|
||||
inline XMLElement( ::rtl::OUString const & name, ::rtl::OUString const & chars )
|
||||
SAL_THROW( () )
|
||||
: _name( name ), _chars( chars )
|
||||
{
|
||||
}
|
||||
|
||||
inline XMLElement( ::rtl::OUString const & name )
|
||||
SAL_THROW( () )
|
||||
: _name( name )
|
||||
{
|
||||
}
|
||||
|
||||
/** Adds a sub element of element.
|
||||
|
||||
@param xElem element reference
|
||||
*/
|
||||
void SAL_CALL addSubElement(
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > const & xElem )
|
||||
SAL_THROW( () );
|
||||
|
||||
/** Gets sub element of given index. The index follows order in which sub elements were added.
|
||||
|
||||
@param nIndex index of sub element
|
||||
*/
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > SAL_CALL getSubElement( sal_Int32 nIndex )
|
||||
SAL_THROW( () );
|
||||
|
||||
/** Adds an attribute to elements.
|
||||
|
||||
@param rAttrName qname of attribute
|
||||
@param rValue value string of element
|
||||
*/
|
||||
void SAL_CALL addAttribute( ::rtl::OUString const & rAttrName, ::rtl::OUString const & rValue )
|
||||
SAL_THROW( () );
|
||||
|
||||
/** Gets the tag name (qname) of element.
|
||||
|
||||
@return
|
||||
qname of element
|
||||
*/
|
||||
inline ::rtl::OUString SAL_CALL getName() SAL_THROW( () )
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
|
||||
/** Dumps out element (and all sub elements).
|
||||
|
||||
@param xOut document handler to be written to
|
||||
*/
|
||||
void SAL_CALL dump(
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > const & xOut );
|
||||
/** Dumps out sub elements (and all further sub elements).
|
||||
|
||||
@param xOut document handler to be written to
|
||||
*/
|
||||
void SAL_CALL dumpSubElements(
|
||||
::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XExtendedDocumentHandler > const & xOut );
|
||||
|
||||
// XAttributeList
|
||||
virtual sal_Int16 SAL_CALL getLength()
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getNameByIndex( sal_Int16 nPos )
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getTypeByIndex( sal_Int16 nPos )
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getTypeByName( ::rtl::OUString const & rName )
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getValueByIndex( sal_Int16 nPos )
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
virtual ::rtl::OUString SAL_CALL getValueByName( ::rtl::OUString const & rName )
|
||||
throw (::com::sun::star::uno::RuntimeException);
|
||||
|
||||
protected:
|
||||
::rtl::OUString _name;
|
||||
|
||||
::rtl::OUString _chars;
|
||||
|
||||
::std::vector< ::rtl::OUString > _attrNames;
|
||||
::std::vector< ::rtl::OUString > _attrValues;
|
||||
|
||||
::std::vector< ::com::sun::star::uno::Reference<
|
||||
::com::sun::star::xml::sax::XAttributeList > > _subElems;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
3
scripting/source/storage/exports.dxp
Normal file
3
scripting/source/storage/exports.dxp
Normal file
@@ -0,0 +1,3 @@
|
||||
component_getImplementationEnvironment
|
||||
component_writeInfo
|
||||
component_getFactory
|
105
scripting/source/storage/makefile.mk
Normal file
105
scripting/source/storage/makefile.mk
Normal file
@@ -0,0 +1,105 @@
|
||||
#*************************************************************************
|
||||
#
|
||||
# $RCSfile: makefile.mk,v $
|
||||
#
|
||||
# $Revision: 1.1 $
|
||||
#
|
||||
# last change: $Author: dfoster $ $Date: 2002-09-20 14:33:56 $
|
||||
#
|
||||
# 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): _______________________________________
|
||||
#
|
||||
#
|
||||
#
|
||||
#*************************************************************************
|
||||
PRJ=..$/..
|
||||
|
||||
PRJNAME= scripting
|
||||
TARGET= storage
|
||||
USE_DEFFILE= TRUE
|
||||
NO_BSYMBOLIC= TRUE
|
||||
ENABLE_EXCEPTIONS=TRUE
|
||||
COMP1TYPELIST=$(TARGET)
|
||||
|
||||
# --- Settings -----------------------------------------------------
|
||||
|
||||
.INCLUDE : settings.mk
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
.INCLUDE : ..$/cppumaker.mk
|
||||
|
||||
SLOFILES=\
|
||||
$(SLO)$/ScriptStorage.obj\
|
||||
$(SLO)$/ScriptInfo.obj\
|
||||
$(SLO)$/ScriptMetadataImporter.obj\
|
||||
$(SLO)$/ScriptElement.obj\
|
||||
$(SLO)$/XMLElement.obj\
|
||||
$(SLO)$/ScriptStorageManager.obj\
|
||||
|
||||
SHL1TARGET= $(TARGET)
|
||||
|
||||
SHL1STDLIBS= \
|
||||
$(CPPULIB) \
|
||||
$(CPPUHELPERLIB) \
|
||||
$(SALLIB) \
|
||||
$(SALLIB)
|
||||
|
||||
SHL1DEPN=
|
||||
SHL1IMPLIB= i$(TARGET)
|
||||
SHL1LIBS= $(SLB)$/$(TARGET).lib
|
||||
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
|
||||
|
||||
DEF1NAME= $(SHL1TARGET)
|
||||
DEF1EXPORTFILE= exports.dxp
|
||||
|
||||
# --- Targets ------------------------------------------------------
|
||||
|
||||
.INCLUDE : target.mk
|
54
scripting/source/storage/storage.xml
Normal file
54
scripting/source/storage/storage.xml
Normal file
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
|
||||
<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<module-name> storage </module-name>
|
||||
<component-description>
|
||||
<author> </author>
|
||||
<name> drafts.com.sun.star.script.framework.storage.ScriptStorage </name>
|
||||
<description>
|
||||
</description>
|
||||
<loader-name> com.sun.star.loader.SharedLibrary </loader-name>
|
||||
<language> c++ </language>
|
||||
<status value="draft"/>
|
||||
<supported-service> drafts.com.sun.star.script.framework.storage.ScriptingStorage </supported-service>
|
||||
<type> com.sun.star.beans.XPropertySet </type>
|
||||
<type> com.sun.star.uno.Exception </type>
|
||||
<type> com.sun.star.uno.XComponentContext </type>
|
||||
<type> com.sun.star.io.IOException </type>
|
||||
<type> com.sun.star.io.XStream </type>
|
||||
<type> com.sun.star.io.XOutputStream </type>
|
||||
<type> com.sun.star.registry.XRegistryKey </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XParcelStore </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.NoSuchView </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.ScriptInfoAccessException </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XBinding </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XBindingStore </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XScriptInfo </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XNameNode </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XNamingAccess </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XScriptAccessManager </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XScriptImplAccess </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XScriptStorageExport </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XScriptStore </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XParcel </type>
|
||||
<type> com.sun.star.lang.XInitialization </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.ScriptImplInfo </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XScriptInvocationPrep </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XParcelInvocationPrep </type>
|
||||
<type> drafts.com.sun.star.script.framework.storage.XScriptStorageManager </type>
|
||||
<type> com.sun.star.xml.sax.XExtendedDocumentHandler </type>
|
||||
<type> com.sun.star.xml.sax.XParser </type>
|
||||
<type> com.sun.star.io.XInputStream </type>
|
||||
<type> com.sun.star.ucb.XSimpleFileAccess2 </type>
|
||||
<type> com.sun.star.xml.sax.SAXException </type>
|
||||
<type> com.sun.star.xml.sax.XAttributeList </type>
|
||||
<type> com.sun.star.io.XActiveDataSource </type>
|
||||
</component-description>
|
||||
<project-build-dependency> cppuhelper </project-build-dependency>
|
||||
<project-build-dependency> cppu </project-build-dependency>
|
||||
<project-build-dependency> sal </project-build-dependency>
|
||||
<runtime-module-dependency> cppuhelper2$(COM) </runtime-module-dependency>
|
||||
<runtime-module-dependency> cppu2 </runtime-module-dependency>
|
||||
<runtime-module-dependency> sal2 </runtime-module-dependency>
|
||||
<runtime-module-dependency> ucb </runtime-module-dependency>
|
||||
</module-description>
|
Reference in New Issue
Block a user