diff options
Diffstat (limited to 'extensions/test/sax/testsax.cxx')
-rw-r--r-- | extensions/test/sax/testsax.cxx | 902 |
1 files changed, 0 insertions, 902 deletions
diff --git a/extensions/test/sax/testsax.cxx b/extensions/test/sax/testsax.cxx deleted file mode 100644 index 67ea67a31038..000000000000 --- a/extensions/test/sax/testsax.cxx +++ /dev/null @@ -1,902 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_extensions.hxx" - -#include <stdio.h> -#include <string.h> -#include <smart/com/sun/star/test/XSimpleTest.hxx> - -#include <rtl/wstring.hxx> -#include <osl/time.h> -#include <usr/weak.hxx> -#include <tools/string.hxx> -#include <osl/conditn.hxx> - -#include <smart/com/sun/star/io/XOutputStream.hxx> -#include <smart/com/sun/star/xml/sax/SAXParseException.hxx> -#include <smart/com/sun/star/xml/sax/XParser.hxx> -#include <smart/com/sun/star/xml/sax/XExtendedDocumentHandler.hxx> - -#include <smart/com/sun/star/lang/XMultiServiceFactory.hxx> // for the multiservice-factories -#include <usr/factoryhlp.hxx> - -#include <usr/reflserv.hxx> // for EXTERN_SERVICE_CALLTYPE - -#include "factory.hxx" - -using namespace usr; - -#define BUILD_ERROR(expr, Message)\ - {\ - m_seqErrors.realloc( m_seqErrors.getLen() + 1 ); \ - m_seqExceptions.realloc( m_seqExceptions.getLen() + 1 ); \ - String str; \ - str += __FILE__;\ - str += " "; \ - str += "(" ; \ - str += __LINE__ ;\ - str += ")\n";\ - str += "[ " ; \ - str += #expr; \ - str += " ] : " ; \ - str += Message; \ - m_seqErrors.getArray()[ m_seqErrors.getLen()-1] = StringToUString( str , CHARSET_SYSTEM ); \ - }\ - ((void)0) - - -#define WARNING_ASSERT(expr, Message) \ - if( ! (expr) ) { \ - m_seqWarnings.realloc( m_seqErrors.getLen() +1 ); \ - String str;\ - str += __FILE__;\ - str += " "; \ - str += "(" ; \ - str += __LINE__ ;\ - str += ")\n";\ - str += "[ " ; \ - str += #expr; \ - str += " ] : " ; \ - str += Message; \ - m_seqWarnings.getArray()[ m_seqWarnings.getLen()-1] = StringToUString( str , CHARSET_SYSTEM ); \ - return; \ - }\ - ((void)0) - -#define ERROR_ASSERT(expr, Message) \ - if( ! (expr) ) { \ - BUILD_ERROR(expr, Message );\ - return; \ - }\ - ((void)0) - -#define ERROR_EXCEPTION_ASSERT(expr, Message, Exception) \ - if( !(expr)) { \ - BUILD_ERROR(expr,Message);\ - m_seqExceptions.getArray()[ m_seqExceptions.getLen()-1] = UsrAny( Exception );\ - return; \ - } \ - ((void)0) - -/**** -* test szenarios : -****/ - - -class OSaxParserTest : - public XSimpleTest, - public OWeakObject -{ -public: - OSaxParserTest( const XMultiServiceFactoryRef & rFactory ) : m_rFactory( rFactory ) - { - - } - -public: // refcounting - BOOL queryInterface( Uik aUik, XInterfaceRef & rOut ); - void acquire() { OWeakObject::acquire(); } - void release() { OWeakObject::release(); } - void* getImplementation(Reflection *p) { return OWeakObject::getImplementation(p); } - -public: - virtual void testInvariant(const UString& TestName, const XInterfaceRef& TestObject) - THROWS( ( IllegalArgumentException, - UsrSystemException) ); - - virtual INT32 test( const UString& TestName, - const XInterfaceRef& TestObject, - INT32 hTestHandle) THROWS( ( IllegalArgumentException, - UsrSystemException) ); - - virtual BOOL testPassed(void) THROWS( ( UsrSystemException) ); - virtual Sequence< UString > getErrors(void) THROWS( (UsrSystemException) ); - virtual Sequence< UsrAny > getErrorExceptions(void) THROWS( (UsrSystemException) ); - virtual Sequence< UString > getWarnings(void) THROWS( (UsrSystemException) ); - -private: - void testSimple( const XParserRef &r ); - void testNamespaces( const XParserRef &r ); - void testFile( const XParserRef &r ); - void testEncoding( const XParserRef &rParser ); - void testPerformance( const XParserRef &rParser ); - -private: - Sequence<UsrAny> m_seqExceptions; - Sequence<UString> m_seqErrors; - Sequence<UString> m_seqWarnings; - XMultiServiceFactoryRef m_rFactory; -}; - - - -/** -* for external binding -**/ -XInterfaceRef OSaxParserTest_CreateInstance( const XMultiServiceFactoryRef & rSMgr ) THROWS((Exception)) -{ - OSaxParserTest *p = new OSaxParserTest( rSMgr ); - XInterfaceRef xService = *p; - return xService; -} - - -UString OSaxParserTest_getServiceName( ) THROWS( () ) -{ - return L"test.com.sun.star.xml.sax.Parser"; -} - -UString OSaxParserTest_getImplementationName( ) THROWS( () ) -{ - return L"test.extensions.xml.sax.Parser"; -} - -Sequence<UString> OSaxParserTest_getSupportedServiceNames( ) THROWS( () ) -{ - Sequence<UString> aRet(1); - - aRet.getArray()[0] = OSaxParserTest_getImplementationName( ); - - return aRet; -} - - -BOOL OSaxParserTest::queryInterface( Uik uik , XInterfaceRef &rOut ) -{ - if( XSimpleTest::getSmartUik() == uik ) { - rOut = (XSimpleTest *) this; - } - else { - return OWeakObject::queryInterface( uik , rOut ); - } - return TRUE; -} - - -void OSaxParserTest::testInvariant( const UString& TestName, const XInterfaceRef& TestObject ) - THROWS( ( IllegalArgumentException, - UsrSystemException) ) -{ - if( L"com.sun.star.xml.sax.Parser" == TestName ) { - XParserRef parser( TestObject , USR_QUERY ); - - ERROR_ASSERT( parser.is() , "XDataInputStream cannot be queried" ); - } -} - - -INT32 OSaxParserTest::test( const UString& TestName, - const XInterfaceRef& TestObject, - INT32 hTestHandle) THROWS( ( IllegalArgumentException, - UsrSystemException) ) -{ - if( L"com.sun.star.xml.sax.Parser" == TestName ) { - try { - if( 0 == hTestHandle ) { - testInvariant( TestName , TestObject ); - } - else { - - XParserRef parser( TestObject , USR_QUERY ); - - if( 1 == hTestHandle ) { - testSimple( parser ); - } - else if( 2 == hTestHandle ) { - testNamespaces( parser ); - } - else if( 3 == hTestHandle ) { - testEncoding( parser ); - } - else if( 4 == hTestHandle ) { - testFile( parser ); - } - else if( 5 == hTestHandle ) { - testPerformance( parser ); - } - } - } - catch( Exception& e ) { - BUILD_ERROR( 0 , UStringToString( e.getName() , CHARSET_SYSTEM ).GetCharStr() ); - } - catch(...) { - BUILD_ERROR( 0 , "unknown exception (Exception is not base class)" ); - } - - hTestHandle ++; - - if( hTestHandle >= 6) { - // all tests finished. - hTestHandle = -1; - } - } - else { - BUILD_ERROR( 0 , "service not supported by test." ); - } - return hTestHandle; -} - - - -BOOL OSaxParserTest::testPassed(void) THROWS( (UsrSystemException) ) -{ - return m_seqErrors.getLen() == 0; -} - - -Sequence< UString > OSaxParserTest::getErrors(void) THROWS( (UsrSystemException) ) -{ - return m_seqErrors; -} - - -Sequence< UsrAny > OSaxParserTest::getErrorExceptions(void) THROWS( (UsrSystemException) ) -{ - return m_seqExceptions; -} - - -Sequence< UString > OSaxParserTest::getWarnings(void) THROWS( (UsrSystemException) ) -{ - return m_seqWarnings; -} - -XInputStreamRef createStreamFromSequence( const Sequence<BYTE> seqBytes , XMultiServiceFactoryRef &xSMgr ) -{ - XInterfaceRef xOutStreamService = xSMgr->createInstance( L"com.sun.star.io.Pipe" ); - OSL_ASSERT( xOutStreamService.is() ); - XOutputStreamRef rOutStream( xOutStreamService , USR_QUERY ); - OSL_ASSERT( rOutStream.is() ); - - XInputStreamRef rInStream( xOutStreamService , USR_QUERY ); - OSL_ASSERT( rInStream.is() ); - - rOutStream->writeBytes( seqBytes ); - rOutStream->flush(); - rOutStream->closeOutput(); - - return rInStream; -} - -XInputStreamRef createStreamFromFile( const char *pcFile , XMultiServiceFactoryRef &xSMgr ) -{ - FILE *f = fopen( pcFile , "rb" ); - XInputStreamRef r; - - if( f ) { - fseek( f , 0 , SEEK_END ); - int nLength = ftell( f ); - fseek( f , 0 , SEEK_SET ); - - Sequence<BYTE> seqIn(nLength); - fread( seqIn.getArray() , nLength , 1 , f ); - - r = createStreamFromSequence( seqIn , xSMgr ); - fclose( f ); - } - return r; -} - - - - - - - - - -#define PCHAR_TO_USTRING(x) StringToUString(String(x),CHARSET_PC_1252) -#define USTRING_TO_PCHAR(x) UStringToString(x,CHARSET_PC_437).GetStr() - - - -class TestDocumentHandler : - public XExtendedDocumentHandler, - public XEntityResolver, - public XErrorHandler, - public OWeakObject -{ -public: - TestDocumentHandler( XMultiServiceFactoryRef &r , BOOL bPrint ) - { - m_xSMgr = r; - m_bPrint = bPrint; - } - - -public: - BOOL queryInterface( Uik aUik, XInterfaceRef & rOut ); - void acquire() { OWeakObject::acquire(); } - void release() { OWeakObject::release(); } - void* getImplementation(Reflection *p) { return OWeakObject::getImplementation(p); } - - -public: // Error handler - virtual void error(const UsrAny& aSAXParseException) THROWS( (SAXException, UsrSystemException) ) - { - printf( "Error !\n" ); - THROW( SAXException( L"error from error handler" , XInterfaceRef() , aSAXParseException ) ); - } - virtual void fatalError(const UsrAny& aSAXParseException) THROWS( (SAXException, UsrSystemException) ) - { - printf( "Fatal Error !\n" ); - } - virtual void warning(const UsrAny& aSAXParseException) THROWS( (SAXException, UsrSystemException) ) - { - printf( "Warning !\n" ); - } - - -public: // ExtendedDocumentHandler - - virtual void startDocument(void) THROWS( (SAXException, UsrSystemException) ) - { - m_iLevel = 0; - m_iElementCount = 0; - m_iAttributeCount = 0; - m_iWhitespaceCount =0; - m_iCharCount=0; - if( m_bPrint ) { - printf( "document started\n" ); - } - } - virtual void endDocument(void) THROWS( (SAXException, UsrSystemException) ) - { - if( m_bPrint ) { - printf( "document finished\n" ); - printf( "(ElementCount %d),(AttributeCount %d),(WhitespaceCount %d),(CharCount %d)\n", - m_iElementCount, m_iAttributeCount, m_iWhitespaceCount , m_iCharCount ); - } - } - virtual void startElement(const UString& aName, const XAttributeListRef& xAttribs) - THROWS( (SAXException,UsrSystemException) ) - { - - if( m_rLocator.is() ) { - if( m_bPrint ) - printf( "%s(%d):" , USTRING_TO_PCHAR( m_rLocator->getSystemId() ) , - m_rLocator->getLineNumber() ); - } - if( m_bPrint ) { - int i; - for( i = 0; i < m_iLevel ; i ++ ) { - printf( " " ); - } - printf( "<%s> " , USTRING_TO_PCHAR( aName ) ); - - for( i = 0 ; i < xAttribs->getLength() ; i ++ ) { - printf( "(%s,%s,'%s')" , USTRING_TO_PCHAR( xAttribs->getNameByIndex( i ) ) , - USTRING_TO_PCHAR( xAttribs->getTypeByIndex( i ) ) , - USTRING_TO_PCHAR( xAttribs->getValueByIndex( i ) ) ); - } - printf( "\n" ); - } - m_iLevel ++; - m_iElementCount ++; - m_iAttributeCount += xAttribs->getLength(); - } - virtual void endElement(const UString& aName) THROWS( (SAXException,UsrSystemException) ) - { - OSL_ASSERT( m_iLevel ); - m_iLevel --; - if( m_bPrint ) { - int i; - for( i = 0; i < m_iLevel ; i ++ ) { - printf( " " ); - } - printf( "</%s>\n" , USTRING_TO_PCHAR( aName ) ); - } - } - - virtual void characters(const UString& aChars) THROWS( (SAXException,UsrSystemException) ) - { - if( m_bPrint ) { - int i; - for( i = 0; i < m_iLevel ; i ++ ) { - printf( " " ); - } - printf( "%s\n" , USTRING_TO_PCHAR( aChars ) ); - } - m_iCharCount += aChars.len(); - } - virtual void ignorableWhitespace(const UString& aWhitespaces) THROWS( (SAXException,UsrSystemException) ) - { - m_iWhitespaceCount += aWhitespaces.len(); - } - - virtual void processingInstruction(const UString& aTarget, const UString& aData) THROWS( (SAXException,UsrSystemException) ) - { - if( m_bPrint ) - printf( "PI : %s,%s\n" , USTRING_TO_PCHAR( aTarget ) , USTRING_TO_PCHAR( aData ) ); - } - - virtual void setDocumentLocator(const XLocatorRef& xLocator) THROWS( (SAXException,UsrSystemException) ) - { - m_rLocator = xLocator; - } - - virtual InputSource resolveEntity(const UString& sPublicId, const UString& sSystemId) - THROWS( (SAXException,UsrSystemException) ) - { - InputSource source; - source.sSystemId = sSystemId; - source.sPublicId = sPublicId; - source.aInputStream = createStreamFromFile( USTRING_TO_PCHAR( sSystemId ) , m_xSMgr ); - - return source; - } - - virtual void startCDATA(void) THROWS( (SAXException,UsrSystemException) ) - { - if( m_bPrint ) { - printf( "CDataStart :\n" ); - } - } - virtual void endCDATA(void) THROWS( (SAXException,UsrSystemException) ) - { - if( m_bPrint ) { - printf( "CEndStart :\n" ); - } - } - virtual void comment(const UString& sComment) THROWS( (SAXException,UsrSystemException) ) - { - if( m_bPrint ) { - printf( "<!--%s-->\n" , USTRING_TO_PCHAR( sComment ) ); - } - } - virtual void unknown(const UString& sString) THROWS( (SAXException,UsrSystemException) ) - { - if( m_bPrint ) { - printf( "UNKNOWN : {%s}\n" , USTRING_TO_PCHAR( sString ) ); - } - } - - virtual void allowLineBreak( void) THROWS( (SAXException, UsrSystemException ) ) - { - - } - - -public: - int m_iLevel; - int m_iElementCount; - int m_iAttributeCount; - int m_iWhitespaceCount; - int m_iCharCount; - BOOL m_bPrint; - - XMultiServiceFactoryRef m_xSMgr; - XLocatorRef m_rLocator; -}; - -BOOL TestDocumentHandler::queryInterface( Uik aUik , XInterfaceRef & rOut ) -{ - if( aUik == XDocumentHandler::getSmartUik() ) { - rOut = (XDocumentHandler * )this; - } - else if ( aUik == XExtendedDocumentHandler::getSmartUik() ) { - rOut = (XExtendedDocumentHandler *) this; - } - else if ( aUik == XEntityResolver::getSmartUik() ) { - rOut = (XEntityResolver *) this; - } - else if ( aUik == XErrorHandler::getSmartUik() ) { - rOut = (XErrorHandler * ) this; - } - else { - return OWeakObject::queryInterface( aUik , rOut ); - } - return TRUE; -} - - - - -void OSaxParserTest::testSimple( const XParserRef &rParser ) -{ - - char TestString[] = - "<!DOCTYPE personnel [\n" - "<!ENTITY testInternal \"internal Test!\">\n" - "<!ENTITY test SYSTEM \"external_entity.xml\">\n" - "]>\n" - - "<personnel>\n" - "<person> fjklsfdklsdfkl\n" - "fjklsfdklsdfkl\n" - "<?testpi pidata?>\n" - "&testInternal;\n" - "<HUHU x='5' y='kjfd'> blahuhu\n" - "<HI> blahi\n" - " <![CDATA[<greeting>Hello, '+1+12world!</greeting>]]>\n" - " <!-- huhu <jdk> -->\n" - "<?testpi pidata?>\n" - "</HI>\n" - "aus XMLTest\n" - "</HUHU>\n" - "</person>\n" - "</personnel>\n\n\n"; - - Sequence<BYTE> seqBytes( strlen( TestString ) ); - memcpy( seqBytes.getArray() , TestString , strlen( TestString ) ); - - - XInputStreamRef rInStream; - UString sInput; - rInStream = createStreamFromSequence( seqBytes , m_rFactory ); - sInput = UString( L"internal" ); - - if( rParser.is() ) { - InputSource source; - - source.aInputStream = rInStream; - source.sSystemId = sInput; - - TestDocumentHandler *pDocHandler = new TestDocumentHandler( m_rFactory , FALSE ); - XDocumentHandlerRef rDocHandler( (XDocumentHandler *) pDocHandler , USR_QUERY ); - XEntityResolverRef rEntityResolver( (XEntityResolver *) pDocHandler , USR_QUERY ); - - rParser->setDocumentHandler( rDocHandler ); - rParser->setEntityResolver( rEntityResolver ); - - try { - rParser->parseStream( source ); - ERROR_ASSERT( pDocHandler->m_iElementCount == 4 , "wrong element count" ); - ERROR_ASSERT( pDocHandler->m_iAttributeCount == 2 , "wrong attribut count" ); - ERROR_ASSERT( pDocHandler->m_iCharCount == 130 , "wrong char count" ); - ERROR_ASSERT( pDocHandler->m_iWhitespaceCount == 0, "wrong whitespace count" ); - } - catch( SAXParseException& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - } - catch( SAXException& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - - } - catch( Exception& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - } - catch(...) { - BUILD_ERROR( 1 , "unknown exception" ); - } - - } - - -} - -void OSaxParserTest::testNamespaces( const XParserRef &rParser ) -{ - - char TestString[] = - "<?xml version='1.0'?>\n" - "<!-- all elements here are explicitly in the HTML namespace -->\n" - "<html:html xmlns:html='http://www.w3.org/TR/REC-html40'>\n" - "<html:head><html:title>Frobnostication</html:title></html:head>\n" - "<html:body><html:p>Moved to \n" - "<html:a href='http://frob.com'>here.</html:a></html:p></html:body>\n" - "</html:html>\n"; - - Sequence<BYTE> seqBytes( strlen( TestString ) ); - memcpy( seqBytes.getArray() , TestString , strlen( TestString ) ); - - - XInputStreamRef rInStream; - UString sInput; - - rInStream = createStreamFromSequence( seqBytes , m_rFactory ); - sInput = UString( L"internal" ); - - if( rParser.is() ) { - InputSource source; - - source.aInputStream = rInStream; - source.sSystemId = sInput; - - TestDocumentHandler *pDocHandler = new TestDocumentHandler( m_rFactory , FALSE ); - XDocumentHandlerRef rDocHandler( (XDocumentHandler *) pDocHandler , USR_QUERY ); - XEntityResolverRef rEntityResolver( (XEntityResolver *) pDocHandler , USR_QUERY ); - - rParser->setDocumentHandler( rDocHandler ); - rParser->setEntityResolver( rEntityResolver ); - - try { - rParser->parseStream( source ); - ERROR_ASSERT( pDocHandler->m_iElementCount == 6 , "wrong element count" ); - ERROR_ASSERT( pDocHandler->m_iAttributeCount == 2 , "wrong attribut count" ); - ERROR_ASSERT( pDocHandler->m_iCharCount == 33, "wrong char count" ); - ERROR_ASSERT( pDocHandler->m_iWhitespaceCount == 0 , "wrong whitespace count" ); - } - catch( SAXParseException& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - } - catch( SAXException& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - - } - catch( Exception& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - } - catch(...) { - BUILD_ERROR( 1 , "unknown exception" ); - } - } -} - -void OSaxParserTest::testEncoding( const XParserRef &rParser ) -{ - char TestString[] = - "<?xml version='1.0' encoding=\"iso-8859-1\"?>\n" - "<!-- all elements here are explicitly in the HTML namespace -->\n" - "<html:html xmlns:html='http://www.w3.org/TR/REC-html40'>\n" - "<html:head><html:title>Frobnostication</html:title></html:head>\n" - "<html:body><html:p>Moved to \n" - "<html:a href='http://frob.com'>here.</html:a></html:p></html:body>\n" - "</html:html>\n"; - - Sequence<BYTE> seqBytes( strlen( TestString ) ); - memcpy( seqBytes.getArray() , TestString , strlen( TestString ) ); - - - XInputStreamRef rInStream; - UString sInput; - - rInStream = createStreamFromSequence( seqBytes , m_rFactory ); - sInput = UString( L"internal" ); - - if( rParser.is() ) { - InputSource source; - - source.aInputStream = rInStream; - source.sSystemId = sInput; - - TestDocumentHandler *pDocHandler = new TestDocumentHandler( m_rFactory , FALSE ); - XDocumentHandlerRef rDocHandler( (XDocumentHandler *) pDocHandler , USR_QUERY ); - XEntityResolverRef rEntityResolver( (XEntityResolver *) pDocHandler , USR_QUERY ); - - rParser->setDocumentHandler( rDocHandler ); - rParser->setEntityResolver( rEntityResolver ); - try { - rParser->parseStream( source ); - } - catch( SAXParseException& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - } - catch( SAXException& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - - } - catch( Exception& e ) { - BUILD_ERROR( 1 , USTRING_TO_PCHAR( e.Message ) ); - } - catch(...) { - BUILD_ERROR( 1 , "unknown exception" ); - } - - } - -} - -void OSaxParserTest::testFile( const XParserRef & rParser ) -{ - - XInputStreamRef rInStream = createStreamFromFile( "testsax.xml" , m_rFactory ); - UString sInput = UString( PCHAR_TO_USTRING( "testsax.xml" ) ); - - - if( rParser.is() && rInStream.is() ) { - InputSource source; - - source.aInputStream = rInStream; - source.sSystemId = sInput; - - TestDocumentHandler *pDocHandler = new TestDocumentHandler( m_rFactory , TRUE ); - XDocumentHandlerRef rDocHandler( (XDocumentHandler *) pDocHandler , USR_QUERY ); - XEntityResolverRef rEntityResolver( (XEntityResolver *) pDocHandler , USR_QUERY ); - XErrorHandlerRef rErrorHandler( ( XErrorHandler * )pDocHandler , USR_QUERY ); - - rParser->setDocumentHandler( rDocHandler ); - rParser->setEntityResolver( rEntityResolver ); - rParser->setErrorHandler( rErrorHandler ); - - try { - rParser->parseStream( source ); - } - catch( SAXParseException& e ) { - UsrAny any; - any.set( &e , SAXParseException_getReflection() ); - while(TRUE) { - SAXParseException *pEx; - if( any.getReflection() == SAXParseException_getReflection() ) { - pEx = ( SAXParseException * ) any.get(); - printf( "%s\n" , UStringToString( pEx->Message , CHARSET_SYSTEM ).GetStr() ); - any = pEx->WrappedException; - } - else { - break; - } - } - } - catch( SAXException& e ) { - printf( "%s\n" , UStringToString( e.Message , CHARSET_SYSTEM ).GetStr() ); - - } - catch( Exception& e ) { - printf( "normal exception ! %s\n", e.getName() ); - } - catch(...) { - printf( "any exception !!!!\n" ); - } - } -} - -void OSaxParserTest::testPerformance( const XParserRef & rParser ) -{ - - XInputStreamRef rInStream = createStreamFromFile( "testPerformance.xml" , m_rFactory ); - UString sInput = UString( PCHAR_TO_USTRING( "testperformance.xml" ) ); - - if( rParser.is() && rInStream.is() ) { - InputSource source; - - source.aInputStream = rInStream; - source.sSystemId = sInput; - - TestDocumentHandler *pDocHandler = new TestDocumentHandler( m_rFactory , FALSE ); - XDocumentHandlerRef rDocHandler( (XDocumentHandler *) pDocHandler , USR_QUERY ); - XEntityResolverRef rEntityResolver( (XEntityResolver *) pDocHandler , USR_QUERY ); - XErrorHandlerRef rErrorHandler( ( XErrorHandler * )pDocHandler , USR_QUERY ); - - rParser->setDocumentHandler( rDocHandler ); - rParser->setEntityResolver( rEntityResolver ); - rParser->setErrorHandler( rErrorHandler ); - - try { - TimeValue aStartTime, aEndTime; - osl_getSystemTime( &aStartTime ); - rParser->parseStream( source ); - osl_getSystemTime( &aEndTime ); - - double fStart = (double)aStartTime.Seconds + ((double)aStartTime.Nanosec / 1000000000.0); - double fEnd = (double)aEndTime.Seconds + ((double)aEndTime.Nanosec / 1000000000.0); - - printf( "Performance reading : %g s\n" , fEnd - fStart ); - - } - catch( SAXParseException& e ) { - UsrAny any; - any.set( &e , SAXParseException_getReflection() ); - while(TRUE) { - SAXParseException *pEx; - if( any.getReflection() == SAXParseException_getReflection() ) { - pEx = ( SAXParseException * ) any.get(); - printf( "%s\n" , UStringToString( pEx->Message , CHARSET_SYSTEM ).GetStr() ); - any = pEx->WrappedException; - } - else { - break; - } - } - } - catch( SAXException& e ) { - printf( "%s\n" , UStringToString( e.Message , CHARSET_SYSTEM ).GetStr() ); - - } - catch( Exception& e ) { - printf( "normal exception ! %s\n", e.getName() ); - } - catch(...) { - printf( "any exception !!!!\n" ); - } - } - -} - - -extern "C" -{ -BOOL EXTERN_SERVICE_CALLTYPE exService_writeRegEntry( - const UNO_INTERFACE(XRegistryKey)* xUnoKey) - -{ - XRegistryKeyRef xKey; - uno2smart(xKey, *xUnoKey); - - UString str = UString( L"/" ) + OSaxParserTest_getImplementationName() + UString( L"/UNO/SERVICES" ); - XRegistryKeyRef xNewKey = xKey->createKey( str ); - xNewKey->createKey( OSaxParserTest_getServiceName() ); - - str = UString( L"/" ) + OSaxWriterTest_getImplementationName() + UString( L"/UNO/SERVICES" ); - xNewKey = xKey->createKey( str ); - xNewKey->createKey( OSaxWriterTest_getServiceName() ); - - return TRUE; -} - - -UNO_INTERFACE(XInterface) EXTERN_SERVICE_CALLTYPE exService_getFactory -( - const wchar_t* implementationName, - const UNO_INTERFACE(XMultiServiceFactory)* xUnoFact, - const UNO_INTERFACE(XRegistryKey)* -) -{ - UNO_INTERFACE(XInterface) xUnoRet = {0, 0}; - - XInterfaceRef xRet; - XMultiServiceFactoryRef xSMgr; - UString aImplementationName(implementationName); - - uno2smart(xSMgr, *xUnoFact); - - if (aImplementationName == OSaxWriterTest_getImplementationName() ) - { - xRet = createSingleFactory( xSMgr, implementationName, - OSaxWriterTest_CreateInstance, - OSaxWriterTest_getSupportedServiceNames() ); - } - else if (aImplementationName == OSaxParserTest_getImplementationName() ) - { - xRet = createSingleFactory( xSMgr, implementationName, - OSaxParserTest_CreateInstance, - OSaxParserTest_getSupportedServiceNames() ); - } - if (xRet.is()) - { - smart2uno(xRet, xUnoRet); - } - - return xUnoRet; -} - -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |