1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_xmlsecurity.hxx" 30 31 #include "util.hxx" 32 33 #include <stdio.h> 34 35 #include <com/sun/star/registry/XImplementationRegistration.hpp> 36 #include <cppuhelper/bootstrap.hxx> 37 #include <comphelper/processfactory.hxx> 38 #include <unotools/streamhelper.hxx> 39 #include <tools/string.hxx> 40 41 namespace cssu = com::sun::star::uno; 42 namespace cssl = com::sun::star::lang; 43 namespace cssxc = com::sun::star::xml::crypto; 44 namespace cssi = com::sun::star::io; 45 46 using namespace ::com::sun::star; 47 48 cssu::Reference< cssl::XMultiServiceFactory > CreateDemoServiceFactory() 49 { 50 cssu::Reference< cssl::XMultiServiceFactory > xMSF; 51 52 try 53 { 54 cssu::Reference< cssl::XMultiComponentFactory > xLocalServiceManager = NULL ; 55 cssu::Reference< cssu::XComponentContext > xLocalComponentContext = NULL ; 56 57 cssu::Reference< ::com::sun::star::registry::XSimpleRegistry > xSimpleRegistry 58 = ::cppu::createSimpleRegistry(); 59 OSL_ENSURE( xSimpleRegistry.is(), 60 "serviceManager - " 61 "Cannot create simple registry" ) ; 62 63 xSimpleRegistry->open(rtl::OUString::createFromAscii( "demo.rdb" ), sal_True, sal_False); 64 OSL_ENSURE( xSimpleRegistry->isValid() , 65 "serviceManager - " 66 "Cannot open xml security registry rdb" ) ; 67 68 xLocalComponentContext = ::cppu::bootstrap_InitialComponentContext( xSimpleRegistry ) ; 69 OSL_ENSURE( xLocalComponentContext.is() , 70 "serviceManager - " 71 "Cannot create intial component context" ) ; 72 73 xLocalServiceManager = xLocalComponentContext->getServiceManager() ; 74 OSL_ENSURE( xLocalServiceManager.is() , 75 "serviceManager - " 76 "Cannot create intial service manager" ) ; 77 78 xMSF = cssu::Reference< cssl::XMultiServiceFactory >(xLocalServiceManager, cssu::UNO_QUERY) ; 79 80 ::comphelper::setProcessServiceFactory( xMSF ); 81 } 82 catch( cssu::Exception& e ) 83 { 84 fprintf( stderr , "Error creating ServiceManager, Exception is %s\n" , rtl::OUStringToOString( e.Message , RTL_TEXTENCODING_ASCII_US ).getStr() ) ; 85 exit (-1); 86 } 87 88 return xMSF; 89 } 90 91 ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > OpenInputStream( const ::rtl::OUString& rStreamName ) 92 { 93 SvFileStream* pStream = new SvFileStream( rStreamName, STREAM_READ ); 94 pStream->Seek( STREAM_SEEK_TO_END ); 95 sal_uLong nBytes = pStream->Tell(); 96 pStream->Seek( STREAM_SEEK_TO_BEGIN ); 97 SvLockBytesRef xLockBytes = new SvLockBytes( pStream, sal_True ); 98 uno::Reference< io::XInputStream > xInputStream = new utl::OInputStreamHelper( xLockBytes, nBytes ); 99 100 return xInputStream; 101 102 } 103 104 ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > OpenOutputStream( const ::rtl::OUString& rStreamName ) 105 { 106 SvFileStream* pStream = new SvFileStream( rStreamName, STREAM_WRITE ); 107 SvLockBytesRef xLockBytes = new SvLockBytes( pStream, sal_True ); 108 uno::Reference< io::XOutputStream > xOutputStream = new utl::OOutputStreamHelper( xLockBytes ); 109 110 return xOutputStream; 111 } 112