'************************************************************************* ' ' 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: registry_XImplementationRegistration.xba,v $ ' ' $Revision: 1.4 $ ' ' 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 Sub RunTest() '************************************************************************* ' INTERFACE: ' com.sun.star.registry.XImplementationRegistration '************************************************************************* On Error Goto ErrHndl Dim bOK As Boolean Dim aImplementationLoader As String Dim aImplementations As Variant Dim aMissingServices As Variant Dim aLocation As String Dim i As Integer Dim k As Integer Dim xReg As Object Dim regKey As Object Dim keyNames As Variant Dim bNeedTest As Boolean xReg = createUNOService("com.sun.star.registry.SimpleRegistry") xReg.Open(utils.Path2URL(cTestDocsDir & "XImpReg.reg"), false, true) aImplementationLoader = "com.sun.star.loader.Java2" aLocation = utils.Path2URL(cTestDocsDir & "qadevlibs/MyPersistObjectImpl.jar") Test.StartMethod("getImplementations()") bOK = true aImplementations = oObj.getImplementations(aImplementationLoader, aLocation) bOK = bOK AND i >= 0 for i = 0 to ubound(aImplementations) Out.Log "" & i + 1 & ") " & aImplementations(i) next i Test.MethodTested("getImplementations()", bOK) Test.StartMethod("registerImplementation()") Out.Log("Registering implementation from " & aLocation) bOK = true oObj.registerImplementation(aImplementationLoader, aLocation, xReg) bOK = bOK AND xReg.isValid() regKey = xReg.getRootKey.openKey("IMPLEMENTATIONS") keyNames = regKey.getKeyNames() Out.Log("In registry found " & ubound(keyNames) + 1 & " implementations.") Dim aFlags(ubound(aImplementations())) As Boolean for i = 0 to ubound(aFlags()) aFlags(i) = false next i for i = 0 to ubound(keyNames()) Out.Log("Found key: " & keyNames(i)) for k = 0 to ubound(aImplementations) if (inStr(1, keyNames(i), aImplementations(k)) > 0 ) then aFlags(k) = true end if next k next i for i = 0 to ubound(aFlags()) if (NOT aFlags(i)) then Out.Log("Can't find information about " & aImplementations(i) & " in regestry") bOK = false end if next i Test.MethodTested("registerImplementation()", bOK) Test.StartMethod("checkInstantiation()") bOK = true Out.Log("Looking for missing services to create " & aImplementations(0)) aMissingServices = oObj.checkInstantiation(aImplementations(0)) Out.Log("" & ubound(aMissingServices) + 1 & " missing services were found") for i = 0 to ubound(aMissingServices) Out.Log "" & i & ") " & aMissingServices(i) next i Test.MethodTested("checkInstantiation()", bOK) Test.StartMethod("revokeImplementation()") bOK = true bNeedTest = false oObj.revokeImplementation(aLocation, xReg) bOK = bOK AND xReg.isValid() regKey = xReg.getRootKey keyNames = regKey.getKeyNames() for i = 0 to ubound(keyNames()) if (inStr(1, keyNames(i), "IMPLEMENTATIONS") > 0) then bNeedTest = true end if next i if (NOT bNeedTest) then Out.Log("No implementation was found.") end if if (bOK AND bNeedTest) then regKey = xReg.getRootKey.openKey("IMPLEMENTATIONS") Out.Log("In registry found " & ubound(keyNames) + 1 & " implementations.") for i = 0 to ubound(aFlags()) aFlags(i) = false next i for i = 0 to ubound(keyNames()) Out.Log("Found key: " & keyNames(i)) for k = 0 to ubound(aImplementations) if (inStr(1, keyNames(i), aImplementations(k)) > 0 ) then aFlags(k) = true end if next k next i for i = 0 to ubound(aFlags()) if (aFlags(i)) then Out.Log("Information about " & aImplementations(i) & " is still in regestry") bOK = false end if next i end if Test.MethodTested("revokeImplementation()", bOK) xReg.Close() Exit Sub ErrHndl: Test.Exception() bOK = false resume next End Sub