xref: /trunk/main/xmlsecurity/tools/demo/util.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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