Hi Mikhail,

I have reimplemented the service and made the documentation from your
description about the service. By the way I changed the name of the
second parameter of the constructors from createTempCopy to bNoTempCopy,
since I realized it might be inconsistent with its real meaning in the
implementation. Could you please see if there's anything need to be
corrected? Thanks in advance. :-)

Best Regards,
Felix.


Mikhail Voitenko 写道:
> Hi Felix,
>
> You are right, the wrong define is an error that will be fixed by
> reimplementation.
>
> The attached in your previous mail hpp and hdl files look good, although
> they are automatically generated, and thus the possibility of a problem
> is quite small. Actually on last meeting I have meant that taking a look
> to them could help to understand the relation between IDL service
> constructor and XInitialization better. But checking them is not really
> necessary, it is enough to check the idl files.
>
> Best regards,
> Mikhail.
>
>
> Zhang Xiaofei wrote:
>   
>> Hi Mikhail,
>>
>> P.S. to the last mail:
>>
>> I may have found something interesting in the pre-compile part of the
>> old xoldsimplestorage.hxx, since there are statements like:
>>
>> #ifndef _CPPUHELPER_IMPLBASE5_HXX_
>> #include <cppuhelper/implbase6.hxx>
>> #endif
>>
>> I assume this could be a potential defect. And it would be gone after
>> the reimplementation.
>>
>> Best Regards,
>> Felix.
>>
>>
>> Mikhail Voitenko 写道:
>>   
>>     
>>> Hi Felix,
>>>
>>> Currently I can not reproduce the problem in my environment. The only
>>> problem I had was a small typo that XOLESimpleStorage.idl includes
>>> Xinterface.idl instead of XInterface.idl.
>>>
>>> It looks like the problem reported by the log was fixed for the issue
>>> i69498. So it should be already in OOF680 branch. By the way, why don't
>>> you use one of the latest SRC680 builds? Working on a very old version
>>> is usually error-prone.
>>>
>>> Best Regards,
>>> Mikhail.
>>>
>>> Zhang Xiaofei wrote:
>>>   
>>>     
>>>       
>>>> Hi Mikhail,
>>>>
>>>> I'm sorry but I encountered a problem compiling the offapi project: the
>>>> two ctors are regarded as having the "identical lists of parameter
>>>> types". It looks as if XStream and XInputStream are regarded as the same
>>>> type by the compiler. Could you please give me some hints here?
>>>>
>>>> By the way, are there any exceptions to be raised for the ctors?
>>>>
>>>> Thanks and Best Regards,
>>>> Felix.
>>>>   
>>>>     
>>>>       
>>>>         
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>   
>>>     
>>>       
>
>   
/*************************************************************************
 *
 *  OpenOffice.org - a multi-platform office productivity suite
 *
 *  $RCSfile: ,v $
 *
 *  $Revision:  $
 *
 *  last change: $Author:  $ $Date:  $
 *
 *  The Contents of this file are made available subject to
 *  the terms of GNU Lesser General Public License Version 2.1.
 *
 *
 *    GNU Lesser General Public License Version 2.1
 *    =============================================
 *    Copyright 2005 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
 *
 ************************************************************************/
#ifndef __com_sun_star_embed_XOLESimpleStorage_idl__
#define __com_sun_star_embed_XOLESimpleStorage_idl__

#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif

#ifndef __com_sun_star_container_XNameContainer_idl__
#include <com/sun/star/container/XNameContainer.idl>
#endif

#ifndef __com_sun_star_lang_XComponent_idl__
#include <com/sun/star/lang/XComponent.idl>
#endif

#ifndef __com_sun_star_embed_XTransactedObject_idl__
#include <com/sun/star/embed/XTransactedObject.idl>
#endif

#ifndef __com_sun_star_embed_XClassifiedObject_idl__
#include <com/sun/star/embed/XClassifiedObject.idl>
#endif


//============================================================================
module com { module sun { module star { module embed {
//============================================================================
/** This interface allows to access and change contents of OLE storages.
*/
interface XOLESimpleStorage
{
        //INTERFACES
        //
        
//------------------------------------------------------------------------
        /** interface <type>XNameContainer</type> is the generic interface for
                supporting the insertion and removal of named elements.<br>
                The access to the elements is provided though
                <type>XNameContainer</type> methods.
        */
    interface ::com::sun::star::container::XNameContainer;

        
//------------------------------------------------------------------------
        /** interface <type>XComponent</type> allows to exclicitly free 
resources
                and break cyclic references.<br>
        */
    interface ::com::sun::star::lang::XComponent;

        
//------------------------------------------------------------------------
        /** interface <type>XTransactedObject</type> allows transacted access to
                an object.<br>
                The storages are always opened in transdacted mode, the
                <type>XTransactedObject</type> interface allows to commit the 
storage.
        */
    interface XTransactedObject;

        
//------------------------------------------------------------------------
        /** interface <type>XClassifiedObject</type> represents common 
                functionality for embedded objects<br>
                the <type>XClassifiedObject</type> interface allows to set/get 
the 
                ClassID of the storage.
        */
    interface XClassifiedObject;

};

//============================================================================

}; }; }; };

#endif
/*************************************************************************
 *
 *  OpenOffice.org - a multi-platform office productivity suite
 *
 *  $RCSfile: ,v $
 *
 *  $Revision:  $
 *
 *  last change: $Author:  $ $Date:  $
 *
 *  The Contents of this file are made available subject to
 *  the terms of GNU Lesser General Public License Version 2.1.
 *
 *
 *    GNU Lesser General Public License Version 2.1
 *    =============================================
 *    Copyright 2005 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
 *
 ************************************************************************/
#ifndef __com_sun_star_embed_OLESimpleStorage_idl__
#define __com_sun_star_embed_OLESimpleStorage_idl__

#ifndef __com_sun_star_embed_XOLESimpleStorage_idl__
#include <com/sun/star/embed/XOLESimpleStorage.idl>
#endif

#ifndef __com_sun_star_io_XInputStream_idl__
#include <com/sun/star/io/XInputStream.idl>
#endif

#ifndef __com_sun_star_io_XStream_idl__
#include <com/sun/star/io/XStream.idl>
#endif

//============================================================================
module com { module sun { module star { module embed {
//============================================================================
/** This service provides a simple functionality to allow
        read/write the storages in OLE storage format. 
*/
service OLESimpleStorage: XOLESimpleStorage 
{
        //CONSTRUCTORS
        //
        /** is used to initialize the object on it's creation.

                @param xInputStream
                                [in] the InputStream that contains data in OLE 
storage format.

                @param bNoTempCopy
                                [in] specifies whether a temporary copy should 
be created during 
                                substreams opening.

         */
        createFromInputStream ([in] ::com::sun::star::io::XInputStream 
xInputStream, [in] boolean bNoTempCopy);
    /** is used to initialize the object on it's creation.

                @param xStream
                                [in] the Stream that contains data in OLE 
storage format.

                @param bNoTempCopy
                                [in] specifies whether a temporary copy should 
be created during
                                substreams opening.

         */
        createFromStream ([in] ::com::sun::star::io::XStream xStream, [in] 
boolean bNoTempCopy);

};

//============================================================================

}; }; }; };

#endif
/*************************************************************************
*
*  OpenOffice.org - a multi-platform office productivity suite
*
*  $RCSfile: xolesimplestorage.hxx,v $
*
*  $Revision: 1.7 $
*
*  last change: $Author: hr $ $Date: 2006/05/09 15:42:46 $
*
*  The Contents of this file are made available subject to
*  the terms of GNU Lesser General Public License Version 2.1.
*
*
*    GNU Lesser General Public License Version 2.1
*    =============================================
*    Copyright 2005 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
*
************************************************************************/

#ifndef __XOLESIMPLESTORAGE_HXX_
#define __XOLESIMPLESTORAGE_HXX_

#ifndef _COM_SUN_STAR_EMBED_XOLESIMPLESTORAGE_HPP_
#include <com/sun/star/embed/XOLESimpleStorage.hpp>
#endif

#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
#include <com/sun/star/container/XNameContainer.hpp>
#endif

#ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_
#include <com/sun/star/lang/XComponent.hpp>
#endif
#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
#include <com/sun/star/lang/XInitialization.hpp>
#endif
#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
#include <com/sun/star/lang/XServiceInfo.hpp>
#endif

#ifndef _COM_SUN_STAR_EMBED_XTRANSACTEDOBJECT_HPP_
#include <com/sun/star/embed/XTransactedObject.hpp>
#endif
#ifndef _COM_SUN_STAR_EMBED_XCLASSIFIEDOBJECT_HPP_
#include <com/sun/star/embed/XClassifiedObject.hpp>
#endif

#ifndef _COM_SUN_STAR_IO_XOUTPUTSTREAM_HPP_
#include <com/sun/star/io/XOutputStream.hpp>
#endif

#ifndef _CPPUHELPER_IMPLBASE3_HXX_
#include <cppuhelper/implbase3.hxx>
#endif

#ifndef _CPPUHELPER_INTERFACECONTAINER_H_
#include <cppuhelper/interfacecontainer.h>
#endif

#include <osl/mutex.hxx>

#include <stg.hxx>


class OLESimpleStorage  : public ::cppu::WeakImplHelper3
        < ::com::sun::star::embed::XOLESimpleStorage
        , ::com::sun::star::lang::XInitialization
        , ::com::sun::star::lang::XServiceInfo >
{
        ::osl::Mutex m_aMutex;

        sal_Bool m_bDisposed;

        ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > 
m_xStream;
        ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > 
m_xTempStream;
        SvStream* m_pStream;
        BaseStorage* m_pStorage;

        ::cppu::OInterfaceContainerHelper* m_pListenersContainer; // list of 
listeners
        ::com::sun::star::uno::Reference< 
::com::sun::star::lang::XMultiServiceFactory > m_xFactory;

        sal_Bool m_bNoTemporaryCopy;

        void UpdateOriginal_Impl();

        static void InsertInputStreamToStorage_Impl( BaseStorage* pStorage, 
::rtl::OUString aName, const ::com::sun::star::uno::Reference< 
::com::sun::star::io::XInputStream >& xInputStream )
                throw ( ::com::sun::star::uno::Exception );

        static void InsertNameAccessToStorage_Impl( BaseStorage* pStorage, 
::rtl::OUString aName, const ::com::sun::star::uno::Reference< 
::com::sun::star::container::XNameAccess >& xNameAccess )
                throw ( ::com::sun::star::uno::Exception );

public:

        OLESimpleStorage( ::com::sun::star::uno::Reference< 
::com::sun::star::lang::XMultiServiceFactory > xFactory );

        virtual ~OLESimpleStorage();

        static ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 
impl_staticGetSupportedServiceNames();
        static ::rtl::OUString SAL_CALL impl_staticGetImplementationName();
        static ::com::sun::star::uno::Reference< 
::com::sun::star::uno::XInterface > SAL_CALL
                impl_staticCreateSelfInstance(
                const ::com::sun::star::uno::Reference< 
::com::sun::star::lang::XMultiServiceFactory >& xServiceManager );


        
//____________________________________________________________________________________________________
        //      XInitialization
        
//____________________________________________________________________________________________________

        virtual void SAL_CALL initialize( const 
::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments )
                throw ( ::com::sun::star::uno::Exception,
                ::com::sun::star::uno::RuntimeException);

        
//____________________________________________________________________________________________________
        //      XNameContainer
        
//____________________________________________________________________________________________________

        virtual void SAL_CALL insertByName( const ::rtl::OUString& aName, const 
::com::sun::star::uno::Any& aElement )
                throw ( ::com::sun::star::lang::IllegalArgumentException,
                ::com::sun::star::container::ElementExistException,
                ::com::sun::star::lang::WrappedTargetException,
                ::com::sun::star::uno::RuntimeException);

        virtual void SAL_CALL removeByName( const ::rtl::OUString& Name )
                throw ( ::com::sun::star::container::NoSuchElementException,
                ::com::sun::star::lang::WrappedTargetException,
                ::com::sun::star::uno::RuntimeException);

        virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, 
const ::com::sun::star::uno::Any& aElement )
                throw ( ::com::sun::star::lang::IllegalArgumentException,
                ::com::sun::star::container::NoSuchElementException,
                ::com::sun::star::lang::WrappedTargetException,
                ::com::sun::star::uno::RuntimeException);

        virtual ::com::sun::star::uno::Any SAL_CALL getByName( const 
::rtl::OUString& aName )
                throw ( ::com::sun::star::container::NoSuchElementException,
                ::com::sun::star::lang::WrappedTargetException,
                ::com::sun::star::uno::RuntimeException );

        virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL 
getElementNames()
                throw ( ::com::sun::star::uno::RuntimeException );

        virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName )
                throw ( ::com::sun::star::uno::RuntimeException );

        virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
                throw ( ::com::sun::star::uno::RuntimeException );

        virtual sal_Bool SAL_CALL hasElements()
                throw ( ::com::sun::star::uno::RuntimeException );

        
//____________________________________________________________________________________________________
        //      XComponent
        
//____________________________________________________________________________________________________

        virtual void SAL_CALL dispose()
                throw ( ::com::sun::star::uno::RuntimeException );

        virtual void SAL_CALL addEventListener(
                const ::com::sun::star::uno::Reference< 
::com::sun::star::lang::XEventListener >& xListener )
                throw ( ::com::sun::star::uno::RuntimeException );

        virtual void SAL_CALL removeEventListener(
                const ::com::sun::star::uno::Reference< 
::com::sun::star::lang::XEventListener >& xListener )
                throw ( ::com::sun::star::uno::RuntimeException );

        
//____________________________________________________________________________________________________
        //      XTransactedObject
        
//____________________________________________________________________________________________________

        virtual void SAL_CALL commit()
                throw ( ::com::sun::star::io::IOException,
                ::com::sun::star::lang::WrappedTargetException,
                ::com::sun::star::uno::RuntimeException );

        virtual void SAL_CALL revert()
                throw ( ::com::sun::star::io::IOException,
                ::com::sun::star::lang::WrappedTargetException,
                ::com::sun::star::uno::RuntimeException );

        
//____________________________________________________________________________________________________
        //      XClassifiedObject
        
//____________________________________________________________________________________________________

        virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL 
getClassID()
                throw ( ::com::sun::star::uno::RuntimeException );

        virtual ::rtl::OUString SAL_CALL getClassName()
                throw ( ::com::sun::star::uno::RuntimeException );

        virtual void SAL_CALL setClassInfo( const 
::com::sun::star::uno::Sequence< ::sal_Int8 >& aClassID,
                const ::rtl::OUString& sClassName )
                throw ( ::com::sun::star::lang::NoSupportException,
                ::com::sun::star::uno::RuntimeException );

        
//____________________________________________________________________________________________________
        //      XServiceInfo
        
//____________________________________________________________________________________________________

        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 );

};

#endif

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to