'************************************************************************* ' ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. ' ' Copyright 2008 by Sun Microsystems, Inc. ' ' OpenOffice.org - a multi-platform office productivity suite ' ' $RCSfile: io_XPersistObject.xba,v $ ' ' $Revision: 1.3 $ ' ' 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 ' ' for a copy of the LGPLv3 License. ' '************************************************************************* '************************************************************************* ' Be sure that all variables are dimensioned: option explicit '************************************************************************* ' This Interface/Service test depends on the following GLOBAL variables, ' which must be specified in the object creation: ' - Global oPersistInstance As Object '************************************************************************* Sub RunTest() '************************************************************************* ' INTERFACE: ' com.sun.star.io.XPersistObject '************************************************************************* On Error Goto ErrHndl Dim bOK As Boolean Dim oMarkIn, oMarkOut, oOutStrm, oInStrm As Object Dim oDummy, oCopy, oPipe As Object Dim uuidString As String Dim UUID(), UUIDnew() As Variant Dim i As Integer if isNull(oPersistInstance) Then Out.Log("oPersistInstance is Empty! No oPersistInstance in main created?") Exit Sub end if Test.StartMethod("getServiceName()") bOK = true bOK = bOK AND (VarType(oObj.getServiceName()) = 8) Test.MethodTested("getServiceName()", bOK) if (hasUnoInterfaces(oObj,"com.sun.star.lang.XTypeProvider")) then 'get ImplementationID Out.Log("Before writing object, rememeber it's implementation ID.") uuidString = "" UUID = oObj.getImplementationId() for i = 0 to ubound(UUID()) uuidString = uuidString & UUID(i) & "; " next i Out.Log("ImplementationID: " & uuidString) endif oDummy = oPersistInstance oPipe = createUNOService("com.sun.star.io.Pipe") oMarkOut = createUNOService("com.sun.star.io.MarkableOutputStream") oMarkIn = createUNOService("com.sun.star.io.MarkableInputStream") oOutStrm = createUNOService("com.sun.star.io.ObjectOutputStream") oInStrm = createUNOService("com.sun.star.io.ObjectInputStream") 'made chain oOutStrm.setOutputStream(oMarkOut) oMarkOut.setOutputStream(oPipe) oMarkIn.setInputStream(oPipe) oInStrm.setInputStream(oMarkIn) Test.StartMethod("write()") Test.StartMethod("read()") bOK = true 'write dummy oOutStrm.writeObject(oDummy) oObj.write(oOutStrm) 'read copy oCopy = oInStrm.readObject() oObj.read(oInStrm) if (hasUnoInterfaces(oObj,"com.sun.star.lang.XTypeProvider")) then Out.Log("After reading object, get it's implementation ID.") uuidString = "" UUIDnew = oObj.getImplementationId() for i = 0 to ubound(UUID()) bOK = bOK AND (UUID(i) = UUIDnew(i)) uuidString = uuidString & UUIDnew(i) & "; " next i Out.Log("ImplementationID: " & uuidString) endif Test.MethodTested("write()", bOK) Test.MethodTested("read()", bOK) ReCreateObj() Exit Sub ErrHndl: Test.Exception() bOK = false resume next End Sub