diff options
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/inc/xmloff/SettingsExportHelper.hxx | 16 | ||||
-rw-r--r-- | xmloff/inc/xmloff/XMLSettingsExportContext.hxx | 66 | ||||
-rw-r--r-- | xmloff/prj/build.lst | 1 | ||||
-rw-r--r-- | xmloff/prj/d.lst | 1 | ||||
-rw-r--r-- | xmloff/qa/unoapi/Test.java | 51 | ||||
-rw-r--r-- | xmloff/qa/unoapi/makefile.mk | 30 | ||||
-rw-r--r-- | xmloff/source/core/SettingsExportHelper.cxx | 131 | ||||
-rw-r--r-- | xmloff/source/core/xmlexp.cxx | 97 | ||||
-rw-r--r-- | xmloff/source/style/styleexp.cxx | 22 | ||||
-rw-r--r-- | xmloff/source/text/XMLTextNumRuleInfo.cxx | 9 | ||||
-rw-r--r-- | xmloff/source/transform/makefile.mk | 2 | ||||
-rw-r--r-- | xmloff/source/transform/xof.map | 8 |
12 files changed, 335 insertions, 99 deletions
diff --git a/xmloff/inc/xmloff/SettingsExportHelper.hxx b/xmloff/inc/xmloff/SettingsExportHelper.hxx index 406a1a2a1d1b..63c7d9f5df54 100644 --- a/xmloff/inc/xmloff/SettingsExportHelper.hxx +++ b/xmloff/inc/xmloff/SettingsExportHelper.hxx @@ -28,6 +28,8 @@ #ifndef _XMLOFF_SETTINGSEXPORTHELPER_HXX #define _XMLOFF_SETTINGSEXPORTHELPER_HXX +#include "xmloff/dllapi.h" + #include <com/sun/star/awt/Rectangle.hpp> #include <com/sun/star/formula/SymbolDescriptor.hpp> #include <com/sun/star/util/XStringSubstitution.hpp> @@ -40,9 +42,15 @@ namespace com namespace util { struct DateTime; } } } } -class XMLSettingsExportHelper + +namespace xmloff +{ + class XMLSettingsExportContext; +} + +class XMLOFF_DLLPUBLIC XMLSettingsExportHelper { - SvXMLExport& rExport; + ::xmloff::XMLSettingsExportContext& m_rContext; ::com::sun::star::uno::Reference< ::com::sun::star::util::XStringSubstitution > mxStringSubsitution; @@ -91,10 +99,10 @@ class XMLSettingsExportHelper const rtl::OUString rName) const; public: - XMLSettingsExportHelper(SvXMLExport& rExport); + XMLSettingsExportHelper( ::xmloff::XMLSettingsExportContext& i_rContext ); ~XMLSettingsExportHelper(); - void exportSettings( + void exportAllSettings( const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aProps, const rtl::OUString& rName) const; }; diff --git a/xmloff/inc/xmloff/XMLSettingsExportContext.hxx b/xmloff/inc/xmloff/XMLSettingsExportContext.hxx new file mode 100644 index 000000000000..d3e0b6a8c5ee --- /dev/null +++ b/xmloff/inc/xmloff/XMLSettingsExportContext.hxx @@ -0,0 +1,66 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org 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 version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +************************************************************************/ + +#ifndef XML_SETTINGS_EXPORT_CONTEXT_HXX +#define XML_SETTINGS_EXPORT_CONTEXT_HXX + +/** === begin UNO includes === **/ +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +/** === end UNO includes === **/ + +#include "xmloff/xmltoken.hxx" + +//........................................................................ +namespace xmloff +{ +//........................................................................ + + //==================================================================== + //= XMLExporter + //==================================================================== + class SAL_NO_VTABLE XMLSettingsExportContext + { + public: + virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, + const ::rtl::OUString& i_rValue ) = 0; + virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, + enum ::xmloff::token::XMLTokenEnum i_eValue ) = 0; + + virtual void StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, + const sal_Bool i_bIgnoreWhitespace ) = 0; + virtual void EndElement( const sal_Bool i_bIgnoreWhitespace ) = 0; + + virtual void Characters( const ::rtl::OUString& i_rCharacters ) = 0; + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > + GetServiceFactory() const = 0; + + }; + +//........................................................................ +} // namespace xmloff +//........................................................................ + +#endif // XML_SETTINGS_EXPORT_CONTEXT_HXX diff --git a/xmloff/prj/build.lst b/xmloff/prj/build.lst index 8817d4590715..7b68ed08ff82 100644 --- a/xmloff/prj/build.lst +++ b/xmloff/prj/build.lst @@ -14,3 +14,4 @@ xo xmloff\source\transform nmake - all xo_transform xo_util xo xmloff\source\xforms nmake - all xo_xforms xo_inc NULL xo xmloff\source\table nmake - all xo_table xo_inc NULL xo xmloff\util nmake - all xo_util xo_chart xo_core xo_draw xo_forms xo_meta xo_script xo_style xo_text xo_xforms xo_table NULL +xo xmloff\qa\unoapi nmake - all xo_qa_unoapi NULL diff --git a/xmloff/prj/d.lst b/xmloff/prj/d.lst index ae4f8cd13ffb..0b51b0dd97cb 100644 --- a/xmloff/prj/d.lst +++ b/xmloff/prj/d.lst @@ -88,6 +88,7 @@ mkdir: %_DEST%\inc%_EXT%\xmloff ..\inc\HatchStyle.hxx %_DEST%\inc%_EXT%\xmloff\HatchStyle.hxx ..\inc\ImageStyle.hxx %_DEST%\inc%_EXT%\xmloff\ImageStyle.hxx ..\inc\xmloff\SettingsExportHelper.hxx %_DEST%\inc%_EXT%\xmloff\SettingsExportHelper.hxx +..\inc\xmloff\XMLSettingsExportContext.hxx %_DEST%\inc%_EXT%\xmloff\XMLSettingsExportContext.hxx ..\inc\xmloff\DocumentSettingsContext.hxx %_DEST%\inc%_EXT%\xmloff\DocumentSettingsContext.hxx ..\inc\xmloff\XMLGraphicsDefaultStyle.hxx %_DEST%\inc%_EXT%\xmloff\XMLGraphicsDefaultStyle.hxx ..\inc\XMLEmbeddedObjectExportFilter.hxx %_DEST%\inc%_EXT%\xmloff\XMLEmbeddedObjectExportFilter.hxx diff --git a/xmloff/qa/unoapi/Test.java b/xmloff/qa/unoapi/Test.java new file mode 100644 index 000000000000..d66144f108e7 --- /dev/null +++ b/xmloff/qa/unoapi/Test.java @@ -0,0 +1,51 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2000, 2010 Oracle and/or its affiliates. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org 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 version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +************************************************************************/ + +package org.openoffice.xmloff.qa.unoapi; + +import org.openoffice.Runner; +import org.openoffice.test.OfficeConnection; +import static org.junit.Assert.*; + +public final class Test { + @org.junit.Before public void setUp() throws Exception { + connection.setUp(); + } + + @org.junit.After public void tearDown() + throws InterruptedException, com.sun.star.uno.Exception + { + connection.tearDown(); + } + + @org.junit.Test public void test() { + assertTrue( + Runner.run( + "-sce", "xmloff.sce", "-xcl", "knownissues.xcl", "-tdoc", + "testdocuments", "-cs", connection.getDescription())); + } + + private final OfficeConnection connection = new OfficeConnection(); +} diff --git a/xmloff/qa/unoapi/makefile.mk b/xmloff/qa/unoapi/makefile.mk index 0b8d1ebf9228..3cbbc5f2a797 100644 --- a/xmloff/qa/unoapi/makefile.mk +++ b/xmloff/qa/unoapi/makefile.mk @@ -1,7 +1,6 @@ #************************************************************************* -# # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# +# # Copyright 2000, 2010 Oracle and/or its affiliates. # # OpenOffice.org - a multi-platform office productivity suite @@ -22,19 +21,28 @@ # version 3 along with OpenOffice.org. If not, see # <http://www.openoffice.org/license.html> # for a copy of the LGPLv3 License. -# -#************************************************************************* +#***********************************************************************/ -PRJ=..$/.. +.IF "$(OOO_SUBSEQUENT_TESTS)" == "" +nothing .PHONY: +.ELSE -PRJNAME=xmloff -TARGET=qa_unoapi +PRJ = ../.. +PRJNAME = xmloff +TARGET = qa_unoapi -.INCLUDE: settings.mk +.IF "$(OOO_JUNIT_JAR)" != "" +PACKAGE = org/openoffice/xmloff/qa/unoapi +JAVATESTFILES = Test.java +JAVAFILES = $(JAVATESTFILES) +JARFILES = OOoRunner.jar ridl.jar test.jar +EXTRAJARFILES = $(OOO_JUNIT_JAR) +.END +.INCLUDE: settings.mk .INCLUDE: target.mk +.INCLUDE: installationtest.mk -ALLTAR : UNOAPI_TEST +ALLTAR : javatest -UNOAPI_TEST: - +$(SOLARENV)$/bin$/checkapi -sce xmloff.sce -xcl knownissues.xcl -tdoc $(PWD)$/testdocuments +.END diff --git a/xmloff/source/core/SettingsExportHelper.cxx b/xmloff/source/core/SettingsExportHelper.cxx index e2b3efeefb4f..48e3dc92b61d 100644 --- a/xmloff/source/core/SettingsExportHelper.cxx +++ b/xmloff/source/core/SettingsExportHelper.cxx @@ -32,32 +32,27 @@ #include <xmloff/xmltoken.hxx> #include <xmloff/xmluconv.hxx> #include <tools/debug.hxx> +#include <tools/diagnose_ex.h> #include <comphelper/extract.hxx> -// #110680# -//#ifndef _COMPHELPER_PROCESSFACTORYHXX_ -//#include <comphelper/processfactory.hxx> -//#endif #include <com/sun/star/linguistic2/XSupportedLocales.hpp> #include <com/sun/star/i18n/XForbiddenCharacters.hpp> #include <com/sun/star/container/XNameAccess.hpp> #include <com/sun/star/container/XNameContainer.hpp> -#ifndef _COM_SUN_STAR_CONTAINER_XIndexCONTAINER_HPP_ #include <com/sun/star/container/XIndexContainer.hpp> -#endif #include <com/sun/star/util/DateTime.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/container/XIndexContainer.hpp> #include <com/sun/star/formula/SymbolDescriptor.hpp> #include <com/sun/star/document/PrinterIndependentLayout.hpp> -#include <xmloff/nmspmap.hxx> +#include <xmloff/XMLSettingsExportContext.hxx> #include <xmlenums.hxx> using namespace ::com::sun::star; using namespace ::xmloff::token; -XMLSettingsExportHelper::XMLSettingsExportHelper(SvXMLExport& rTempExport) -: rExport(rTempExport) +XMLSettingsExportHelper::XMLSettingsExportHelper( ::xmloff::XMLSettingsExportContext& i_rContext ) +: m_rContext( i_rContext ) , msPrinterIndependentLayout( RTL_CONSTASCII_USTRINGPARAM( "PrinterIndependentLayout" ) ) , msColorTableURL( RTL_CONSTASCII_USTRINGPARAM( "ColorTableURL" ) ) , msLineEndTableURL( RTL_CONSTASCII_USTRINGPARAM( "LineEndTableURL" ) ) @@ -194,89 +189,97 @@ void XMLSettingsExportHelper::CallTypeFunction(const uno::Any& rAny, void XMLSettingsExportHelper::exportBool(const sal_Bool bValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BOOLEAN); - SvXMLElementExport aBoolElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_BOOLEAN ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUString sValue; if (bValue) sValue = GetXMLToken(XML_TRUE); else sValue = GetXMLToken(XML_FALSE); - rExport.GetDocHandler()->characters(sValue); + m_rContext.Characters( sValue ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportByte(const sal_Int8 nValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BYTE); - SvXMLElementExport aShortElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_BYTE ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertNumber(sBuffer, sal_Int32(nValue)); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportShort(const sal_Int16 nValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_SHORT); - SvXMLElementExport aShortElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_SHORT ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertNumber(sBuffer, sal_Int32(nValue)); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportInt(const sal_Int32 nValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_INT); - SvXMLElementExport aIntElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_INT ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertNumber(sBuffer, nValue); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportLong(const sal_Int64 nValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_LONG); - SvXMLElementExport aIntElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_LONG ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUString sValue(rtl::OUString::valueOf(nValue)); - rExport.GetDocHandler()->characters(sValue); + m_rContext.Characters( sValue ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportDouble(const double fValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_DOUBLE); - SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_DOUBLE ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertDouble(sBuffer, fValue); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportString(const rtl::OUString& sValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_STRING); - SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_STRING ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); if (sValue.getLength()) - rExport.GetDocHandler()->characters(sValue); + m_rContext.Characters( sValue ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportDateTime(const util::DateTime& aValue, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_DATETIME); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_DATETIME ); rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::convertDateTime(sBuffer, aValue); - SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); + m_rContext.Characters( sBuffer.makeStringAndClear() ); + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportSequencePropertyValue( @@ -287,10 +290,11 @@ void XMLSettingsExportHelper::exportSequencePropertyValue( sal_Int32 nLength(aProps.getLength()); if(nLength) { - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - SvXMLElementExport aSequenceElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_SET, sal_True, sal_True); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.StartElement( XML_CONFIG_ITEM_SET, sal_True ); for (sal_Int32 i = 0; i < nLength; i++) CallTypeFunction(aProps[i].Value, aProps[i].Name); + m_rContext.EndElement( sal_True ); } } void XMLSettingsExportHelper::exportSymbolDescriptors( @@ -299,7 +303,7 @@ void XMLSettingsExportHelper::exportSymbolDescriptors( { // #110680# // uno::Reference< lang::XMultiServiceFactory > xServiceFactory( comphelper::getProcessServiceFactory() ); - uno::Reference< lang::XMultiServiceFactory > xServiceFactory( rExport.getServiceFactory() ); + uno::Reference< lang::XMultiServiceFactory > xServiceFactory( m_rContext.GetServiceFactory() ); DBG_ASSERT( xServiceFactory.is(), "XMLSettingsExportHelper::exportSymbolDescriptors: got no service manager" ); if( xServiceFactory.is() ) @@ -362,15 +366,16 @@ void XMLSettingsExportHelper::exportbase64Binary( { DBG_ASSERT(rName.getLength(), "no name"); sal_Int32 nLength(aProps.getLength()); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_TYPE, XML_BASE64BINARY); - SvXMLElementExport aDoubleElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM, sal_True, sal_False); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.AddAttribute( XML_TYPE, XML_BASE64BINARY ); + m_rContext.StartElement( XML_CONFIG_ITEM, sal_True ); if(nLength) { rtl::OUStringBuffer sBuffer; SvXMLUnitConverter::encodeBase64(sBuffer, aProps); - rExport.GetDocHandler()->characters(sBuffer.makeStringAndClear()); + m_rContext.Characters( sBuffer.makeStringAndClear() ); } + m_rContext.EndElement( sal_False ); } void XMLSettingsExportHelper::exportMapEntry(const uno::Any& rAny, @@ -384,10 +389,11 @@ void XMLSettingsExportHelper::exportMapEntry(const uno::Any& rAny, if (nLength) { if (bNameAccess) - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - SvXMLElementExport aEntryElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_ENTRY, sal_True, sal_True); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.StartElement( XML_CONFIG_ITEM_MAP_ENTRY, sal_True ); for (sal_Int32 i = 0; i < nLength; i++) CallTypeFunction(aProps[i].Value, aProps[i].Name); + m_rContext.EndElement( sal_True ); } } @@ -400,11 +406,12 @@ void XMLSettingsExportHelper::exportNameAccess( "wrong NameAccess" ); if(aNamed->hasElements()) { - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - SvXMLElementExport aNamedElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_NAMED, sal_True, sal_True); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.StartElement( XML_CONFIG_ITEM_MAP_NAMED, sal_True ); uno::Sequence< rtl::OUString > aNames(aNamed->getElementNames()); for (sal_Int32 i = 0; i < aNames.getLength(); i++) exportMapEntry(aNamed->getByName(aNames[i]), aNames[i], sal_True); + m_rContext.EndElement( sal_True ); } } @@ -414,17 +421,18 @@ void XMLSettingsExportHelper::exportIndexAccess( { DBG_ASSERT(rName.getLength(), "no name"); DBG_ASSERT(aIndexed->getElementType().equals(getCppuType( (uno::Sequence<beans::PropertyValue> *)0 ) ), - "wrong NameAccess" ); + "wrong IndexAccess" ); rtl::OUString sEmpty;// ( RTLCONSTASCII_USTRINGPARAM( "View" ) ); if(aIndexed->hasElements()) { - rExport.AddAttribute(XML_NAMESPACE_CONFIG, XML_NAME, rName); - SvXMLElementExport aIndexedElem(rExport, XML_NAMESPACE_CONFIG, XML_CONFIG_ITEM_MAP_INDEXED, sal_True, sal_True); + m_rContext.AddAttribute( XML_NAME, rName ); + m_rContext.StartElement( XML_CONFIG_ITEM_MAP_INDEXED, sal_True ); sal_Int32 nCount = aIndexed->getCount(); for (sal_Int32 i = 0; i < nCount; i++) { exportMapEntry(aIndexed->getByIndex(i), sEmpty, sal_False); } + m_rContext.EndElement( sal_True ); } } @@ -445,7 +453,7 @@ void XMLSettingsExportHelper::exportForbiddenCharacters( // #110680# // uno::Reference< lang::XMultiServiceFactory > xServiceFactory( comphelper::getProcessServiceFactory() ); - uno::Reference< lang::XMultiServiceFactory > xServiceFactory( rExport.getServiceFactory() ); + uno::Reference< lang::XMultiServiceFactory > xServiceFactory( m_rContext.GetServiceFactory() ); DBG_ASSERT( xServiceFactory.is(), "XMLSettingsExportHelper::exportForbiddenCharacters: got no service manager" ); if( xServiceFactory.is() ) @@ -496,14 +504,12 @@ void XMLSettingsExportHelper::exportForbiddenCharacters( } } -void XMLSettingsExportHelper::exportSettings( +void XMLSettingsExportHelper::exportAllSettings( const uno::Sequence<beans::PropertyValue>& aProps, const rtl::OUString& rName) const { DBG_ASSERT(rName.getLength(), "no name"); - ::rtl::OUString aQName = - rExport.GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_OOO, rName ); - exportSequencePropertyValue(aProps, aQName); + exportSequencePropertyValue(aProps, rName); } @@ -531,15 +537,16 @@ void XMLSettingsExportHelper::ManipulateSetting( uno::Any& rAny, const rtl::OUSt { if( !mxStringSubsitution.is() ) { - if( rExport.getServiceFactory().is() ) try + if( m_rContext.GetServiceFactory().is() ) try { const_cast< XMLSettingsExportHelper* >(this)->mxStringSubsitution = uno::Reference< util::XStringSubstitution >::query( - rExport.getServiceFactory()-> + m_rContext.GetServiceFactory()-> createInstance(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.util.PathSubstitution" ) ) ) ); } catch( uno::Exception& ) { + DBG_UNHANDLED_EXCEPTION(); } } diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index 2eaaeceb444e..4c52cc2ce4cb 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -53,6 +53,7 @@ #include <xmloff/xmlexp.hxx> #include <xmloff/xmlnumfe.hxx> #include <xmloff/xmlmetae.hxx> +#include <xmloff/XMLSettingsExportContext.hxx> #include <xmloff/families.hxx> #include <xmloff/XMLEventExport.hxx> #include "XMLStarBasicExportHandler.hxx" @@ -157,6 +158,72 @@ const XMLServiceMapEntry_Impl aServiceMap[] = //============================================================================== +class SAL_DLLPRIVATE SettingsExportFacade : public ::xmloff::XMLSettingsExportContext +{ +public: + SettingsExportFacade( SvXMLExport& i_rExport ) + :m_rExport( i_rExport ) + { + } + + virtual ~SettingsExportFacade() + { + } + + virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, + const ::rtl::OUString& i_rValue ); + virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, + enum ::xmloff::token::XMLTokenEnum i_eValue ); + + virtual void StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, + const sal_Bool i_bIgnoreWhitespace ); + virtual void EndElement( const sal_Bool i_bIgnoreWhitespace ); + + virtual void Characters( const ::rtl::OUString& i_rCharacters ); + + virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > + GetServiceFactory() const; +private: + SvXMLExport& m_rExport; + ::std::stack< ::rtl::OUString > m_aElements; +}; + +void SettingsExportFacade::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, const ::rtl::OUString& i_rValue ) +{ + m_rExport.AddAttribute( XML_NAMESPACE_CONFIG, i_eName, i_rValue ); +} + +void SettingsExportFacade::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, enum ::xmloff::token::XMLTokenEnum i_eValue ) +{ + m_rExport.AddAttribute( XML_NAMESPACE_CONFIG, i_eName, i_eValue ); +} + +void SettingsExportFacade::StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, const sal_Bool i_bIgnoreWhitespace ) +{ + const ::rtl::OUString sElementName( m_rExport.GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_CONFIG, GetXMLToken( i_eName ) ) ); + m_rExport.StartElement( sElementName, i_bIgnoreWhitespace ); + m_aElements.push( sElementName ); +} + +void SettingsExportFacade::EndElement( const sal_Bool i_bIgnoreWhitespace ) +{ + const ::rtl::OUString sElementName( m_aElements.top() ); + m_rExport.EndElement( sElementName, i_bIgnoreWhitespace ); + m_aElements.pop(); +} + +void SettingsExportFacade::Characters( const ::rtl::OUString& i_rCharacters ) +{ + m_rExport.GetDocHandler()->characters( i_rCharacters ); +} + +Reference< XMultiServiceFactory > SettingsExportFacade::GetServiceFactory() const +{ + return m_rExport.getServiceFactory(); +} + +//============================================================================== + class SvXMLExportEventListener : public cppu::WeakImplHelper1< com::sun::star::lang::XEventListener > { @@ -1100,7 +1167,9 @@ void SvXMLExport::ImplExportSettings() nSettingsCount != 0, XML_NAMESPACE_OFFICE, XML_SETTINGS, sal_True, sal_True ); - XMLSettingsExportHelper aSettingsExportHelper(*this); + + SettingsExportFacade aSettingsExportContext( *this ); + XMLSettingsExportHelper aSettingsExportHelper( aSettingsExportContext ); for ( ::std::list< SettingsGroup >::const_iterator settings = aSettings.begin(); settings != aSettings.end(); @@ -1111,7 +1180,8 @@ void SvXMLExport::ImplExportSettings() continue; OUString sSettingsName( GetXMLToken( settings->eGroupName ) ); - aSettingsExportHelper.exportSettings( settings->aSettings, sSettingsName ); + OUString sQName = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_OOO, sSettingsName ); + aSettingsExportHelper.exportAllSettings( settings->aSettings, sQName ); } } } @@ -1244,6 +1314,23 @@ void SvXMLExport::SetBodyAttributes() { } +static void +lcl_AddGrddl(SvXMLExport & rExport, const sal_Int32 nExportMode) +{ + // check version >= 1.2 + switch (rExport.getDefaultVersion()) { + case SvtSaveOptions::ODFVER_011: // fall thru + case SvtSaveOptions::ODFVER_010: return; + default: break; + } + + if (EXPORT_SETTINGS != nExportMode) // meta, content, styles + { + rExport.AddAttribute( XML_NAMESPACE_GRDDL, XML_TRANSFORMATION, + OUString::createFromAscii(s_grddl_xsl) ); + } +} + sal_uInt32 SvXMLExport::exportDoc( enum ::xmloff::token::XMLTokenEnum eClass ) { bool bOwnGraphicResolver = false; @@ -1379,11 +1466,7 @@ sal_uInt32 SvXMLExport::exportDoc( enum ::xmloff::token::XMLTokenEnum eClass ) enum XMLTokenEnum eRootService = XML_TOKEN_INVALID; const sal_Int32 nExportMode = mnExportFlags & (EXPORT_META|EXPORT_STYLES|EXPORT_CONTENT|EXPORT_SETTINGS); - if ( EXPORT_SETTINGS != nExportMode ) // meta, content, styles - { - AddAttribute( XML_NAMESPACE_GRDDL, XML_TRANSFORMATION, - OUString::createFromAscii(s_grddl_xsl) ); - } + lcl_AddGrddl(*this, nExportMode); if( EXPORT_META == nExportMode ) { diff --git a/xmloff/source/style/styleexp.cxx b/xmloff/source/style/styleexp.cxx index 0bbdf9e18482..5292b92d4128 100644 --- a/xmloff/source/style/styleexp.cxx +++ b/xmloff/source/style/styleexp.cxx @@ -197,13 +197,22 @@ sal_Bool XMLStyleExport::exportStyle( OUStringBuffer sTmp; sTmp.append( static_cast<sal_Int32>(nOutlineLevel)); GetExport().AddAttribute( XML_NAMESPACE_STYLE, - XML_DEFAULT_OUTLINE_LEVEL, - sTmp.makeStringAndClear() ); + XML_DEFAULT_OUTLINE_LEVEL, + sTmp.makeStringAndClear() ); } else { - GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_DEFAULT_OUTLINE_LEVEL, - OUString( RTL_CONSTASCII_USTRINGPARAM( "" ))); + // --> OD 2009-12-29 #i104889# + // empty value for style:default-outline-level does exist + // since ODF 1.2. Thus, suppress its export for former versions. + if ( ( GetExport().getExportFlags() & EXPORT_OASIS ) != 0 && + GetExport().getDefaultVersion() >= SvtSaveOptions::ODFVER_012 ) + // <-- + { + GetExport().AddAttribute( XML_NAMESPACE_STYLE, + XML_DEFAULT_OUTLINE_LEVEL, + OUString( RTL_CONSTASCII_USTRINGPARAM( "" ))); + } } } }//<-end,zhaojianwei @@ -308,8 +317,9 @@ sal_Bool XMLStyleExport::exportStyle( } ///////////////////////////////////////////////// if ( bNoInheritedListStyle ) - GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_LIST_STYLE_NAME, - OUString( RTL_CONSTASCII_USTRINGPARAM( "" ))); + GetExport().AddAttribute( XML_NAMESPACE_STYLE, + XML_LIST_STYLE_NAME, + OUString( RTL_CONSTASCII_USTRINGPARAM( "" ))); } //<-end,zhaojianwei } diff --git a/xmloff/source/text/XMLTextNumRuleInfo.cxx b/xmloff/source/text/XMLTextNumRuleInfo.cxx index 5d37764d5726..482d94d05889 100644 --- a/xmloff/source/text/XMLTextNumRuleInfo.cxx +++ b/xmloff/source/text/XMLTextNumRuleInfo.cxx @@ -120,6 +120,15 @@ void XMLTextNumRuleInfo::Set( } // <-- + // --> OD 2010-01-13 #b6912256# + if ( mnListLevel < 0 ) + { + DBG_ASSERT( false, + "<XMLTextNumRuleInfo::Set(..)> - unexpected numbering level" ); + Reset(); + return; + } + // --> OD 2006-09-27 #i69627# bool bSuppressListStyle( false ); if ( mxNumRules.is() ) diff --git a/xmloff/source/transform/makefile.mk b/xmloff/source/transform/makefile.mk index 473cec556212..bba8deb6db2b 100644 --- a/xmloff/source/transform/makefile.mk +++ b/xmloff/source/transform/makefile.mk @@ -86,7 +86,7 @@ SHL1STDLIBS = \ .ELSE SHL1STDLIBS += ixo.lib .ENDIF -SHL1VERSIONMAP = xof.map +SHL1VERSIONMAP = $(SOLARENV)/src/component.map SHL1IMPLIB = i$(SHL1TARGET) DEF1NAME = $(SHL1TARGET) diff --git a/xmloff/source/transform/xof.map b/xmloff/source/transform/xof.map deleted file mode 100644 index f4ed78b9e970..000000000000 --- a/xmloff/source/transform/xof.map +++ /dev/null @@ -1,8 +0,0 @@ -UDK_3_0_0 { - global: - component_getImplementationEnvironment; - component_writeInfo; - component_getFactory; - local: - *; -}; |