Re: Help Required In Writing a New SDBC Driver For LDAP

Ocke Janssen <[email protected]> Wed, 30 Mar 2011 07:43:27 +0200
Newsgroups gmane.comp.openoffice.dba.devel
Organization ORACLE Deutschland B.V. & Co. KG
Message-ID <[email protected]>
Hello Rohit,

On 30.03.2011 03:01, Rohit Kulkarni wrote:
> Hello Oj,
>
> I an not writing the sdbcx driver, also I can debug everything else but
> my driver code. I am guessing I am not registering the driver properly.
>
> I have written the .xml file for the driver and also made changes to
> DataAccess.xcu. Should this be sufficient to register the driver? if no=
t
> what else do I need to do ?
Do have changed the module scp2 and added lines like
STD_LIB_FILE(gid_File_Lib_Mysql,mysql) in file_library_ooo.scp
and
gid_File_Lib_Mysql, in module_hidden_ooo.scp ?

You have to build OOo instset because your registration is done there.
If the driver should not be an extension than we you could remove your=20
dataaccess.xcu changes and adjust the code in dbaccess (look for sdbc: )

Best regards,

oj
>
> Here are excerpts from those files:
>
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D DriverSkeleton.xml =3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>
> <?xml version=3D'1.0' encoding=3D"UTF-8"?>
> <!DOCTYPE COMPONENTDESCRIPTION PUBLIC "-//W3C//DTD HTML 3.2//EN"
> "module-description.dtd">
> <module-description xmlns:xlink=3D"http://www.w3.org/1999/xlink">
> <module-name>   skeleton1 </module-name>
> <component-description>
> <Author>rohit</Author>
> <Name>org.openoffice.comp.connectivity.skeleton.SkeletonDriver</Name>
> <description>This library implements the database driver for
> Skeleton.</description>
> <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
> <language>c++</language>
> <status value=3D"alpha"/>
> <supported-service>com.sun.star.sdbc.Driver</supported-service>
> <service-dependency>    ... </service-dependency>
> </component-description>
> <project-build-dependency>cppuhelper</project-build-dependency>
> <project-build-dependency>cppu</project-build-dependency>
> <project-build-dependency>sal</project-build-dependency>
> <project-build-dependency>vos</project-build-dependency>
> <runtime-module-dependency>cppuhelper</runtime-module-dependency>
> <runtime-module-dependency>cppu1</runtime-module-dependency>
> <runtime-module-dependency>sal1 </runtime-module-dependency>
> <runtime-module-dependency>vos</runtime-module-dependency>
> </module-description>
>
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D DataAccess.xcu =3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>
> <!DOCTYPE oor:component-data SYSTEM "../../../../component-update.dtd">
> <oor:component-data oor:name=3D"DataAccess"
> oor:package=3D"org.openoffice.Office"
> xmlns:oor=3D"http://openoffice.org/2001/registry"
> xmlns:xs=3D"http://www.w3.org/2001/XMLSchema"
> xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance">
> <node oor:name=3D"UserDefinedDriverSettings">
> <node oor:name=3D"Driver Skeleton" oor:op=3D"replace">
> <prop oor:name=3D"DriverTypeDisplayName">
> <value>Driver Skeleton</value>
> </prop>
> <prop oor:name=3D"DriverPageDisplayName">
> <value>Driver Skeleton Page</value>
> </prop>
> <prop oor:name=3D"DriverDsnPrefix">
> <value>sdbc:skeleton:</value>
> </prop>
> </node>
> </node>
> <node oor:name=3D"ConnectionPool">
> <node oor:name=3D"DriverSettings">
> <node
> oor:name=3D"org.openoffice.comp.connectivity.skeleton.SkeletonDriver"
> oor:op=3D"replace">
> <prop oor:name=3D"DriverName">
> <value>org.openoffice.comp.connectivity.skeleton.SkeletonDriver</value>
> </prop>
> <prop oor:name=3D"Enable">
> <value>false</value>
> </prop>
> <prop oor:name=3D"Timeout">
> <value>60</value>
> </prop>
> </node>
> <node oor:name=3D"com.sun.star.comp.sdbcx.adabas.ODriver" oor:op=3D"rep=
lace">
> <prop oor:name=3D"DriverName">
> <value>com.sun.star.comp.sdbcx.adabas.ODriver</value>
> </prop> ...........
>            :
>
> ----------
>
> there is also a DriverSkeleton.xcu as below:
>
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D DriverSkeleton.xcu =3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D
> <oor:component-data oor:name=3D"Drivers"
> oor:package=3D"org.openoffice.Office.DataAccess"
> xmlns:oor=3D"http://openoffice.org/2001/registry"
> xmlns:xs=3D"http://www.w3.org/2001/XMLSchema">
> <node oor:name=3D"Installed">
> <node oor:name=3D"sdbc:skeleton:*" oor:op=3D"replace">
> <prop oor:name=3D"Driver">
> <value>org.openoffice.comp.connectivity.skeleton.SkeletonDriver</value>
> </prop>
> <prop oor:name=3D"DriverTypeDisplayName" oor:type=3D"xs:string">
> <value xml:lang=3D"en-US">Skeleton Driver</value>
> </prop>
> <node oor:name=3D"Features">
> <node oor:name=3D"EscapeDateTime" oor:op=3D"replace">
> <prop oor:name=3D"Value" oor:type=3D"xs:boolean">
> <value>true</value>
> </prop>
> </node>
> </node>
> </node>
> </node>
> </oor:component-data>
>
> as for this I have updated the "build.lst and d.lst" files so that it
> builds the "libDriverSkeletonli.so" file and copies it into the
> installation set.
> But when I debug this I can see that my driver is not returned as part
> of enumeration by "createContentEnumeration()"
>
> Could you suggest any way I can fix this?
> thanks in advance.
>
> -Rohit
>
> On Tue, Mar 29, 2011 at 12:06 AM, Ocke Janssen <[email protected]
> <mailto:[email protected]>> wrote:
>
>     Hi Rohit,
>
>
>     On 28.03.2011 17:43, Rohit Kulkarni wrote:
>
>             Hello,
>             1) I built whole openoffice and installed it.(normal build
>         i.e build
>             --all)
>             2) I built only dbaccess and connectivity modules with
>         debug=3Dtrue
>             dbglevel=3D2
>             3) Copied .so files from ../connectivity/unxlngi6.pro/lib/*
>         <http://unxlngi6.pro/lib/*>
>         <http://unxlngi6.pro/lib/*> and ../dbaccess/unxlngi6.pr/lib/*
>         <http://unxlngi6.pr/lib/*>
>         <http://unxlngi6.pr/lib/*>  to ../../openoffice3/basis-link/pro=
gram/
>
>             4) Now I set breakpoint to " b
>             connectivity::flat::ODriver::acceptsURL "
>             5) Run base through gdb.
>             6) Execution stopped at breakpoint, whatever I select flat =
or
>             skeleton driver or any other from available driver list.
>             7) When I set breakpoint at " b
>             connectivity::skeleton::SkeletonDriver::acceptsURL ", it
>         wont stop
>             at breakpoint.
>             8) That means execution of program never goes to SDriver.cx=
x
>             (skeleton driver file) file which has acceptsURL function.
>
>             The things I have noticed after some more debugging in gdb
>         are --
>
>             1) I saw the function named
>         OSDBCDriverManager::bootstrapDrivers()
>             2) I think this is the function where it populates the list
>         of all
>             drivers using
>         " createContentEnumeration " function.
>             3) And this function is not returning my driver.
>             4) I saw this after watching the value of " aDriverDescript=
or "
>             variable which is used for pushback in vector " m_aDriverBS
>         " , I
>             saw various strings for example , for flat it is
>         "com.sun.star.comp.sdbc.flat.ODriver" but not my driver name.
>
>         What do I need to do so that createContentEnumeration will retu=
rn my
>         driver object in the list ?
>
>
>     Do you register the driver as an extension? If so the lib are not
>     located in basis-link/program they are located in your user folder
>     3/user/uno_package/cache/uno_package/...
>     That would also explain why you can't set any breakpoint.
>     Another reason could be that your driver doesn't support
>     "com.sun.star.sdbc.Driver" or the driver was not registered.
>
>     If that doesn't work I could look at the code if you want to.
>
>     Best regards,
>
>     Ocke
>
>
>
>         Regards,
>         Rohit
>
>
>         On Mon, Mar 28, 2011 at 1:16 PM, Ocke Janssen
>         <[email protected] <mailto:[email protected]>
>         <mailto:[email protected]
>         <mailto:[email protected]>>> wrote:
>
>             Hi,
>
>
>             On 26.03.2011 06 <tel:26.03.2011%2006>:47, Rohit Kulkarni w=
rote:
>
>                 Hello,
>                 I have successfully built skeleton driver and I can see
>         it in
>                 available
>                 list.
>                 Now , I tried to debug it using gdb. For this I followe=
d
>                 instructions on
>         http://wiki.services.openoffice.org/wiki/Debugging
>                 Build using debug=3Dtrue and copied .so files to
>         installation set.
>
>                 I added a breakpoint at
>                 connectivity::skeleton::SkeletonDriver::acceptsURL then=
,
>                 run base -> select Skeleton Driver -> Datasource url
>         window appears
>                 (typed any string in it) -> saved ->finish
>                 In this process debugger wont stop at breakpoint.
>
>                 Another thing is that I added breakpoint at
>                 connectivity::flat::ODriver::acceptsURL then, all same
>         steps above.
>                 Debugger stopped at breakpoint where I can see flat fil=
e
>         EDriver.cxx
>                 code with acceptsURL function.
>
>                 So, do you have any idea why it wouldn't call
>                 connectivity::skeleton::SkeletonDriver::acceptsURL func=
tion?
>
>             May be you copied the wrong files or you built them not wit=
h
>         debug=3Dt
>             ? When you can set a break point for flat it should also
>         work for
>             your driver. No guess so far. Or may be set the break point
>         when the
>             library was loaded. I'm not the gdb expert.
>
>             - oj
>
>
>                 Regards,
>                 Rohit
>                 On Tue, Mar 15, 2011 at 11:53 AM, Ocke Janssen
>         <[email protected] <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]=
>>
>         <mailto:[email protected] <mailto:[email protected]=
>
>         <mailto:[email protected]
>         <mailto:[email protected]>>>> wrote:
>
>                     On 14.03.2011 18:45, Rohit Kulkarni wrote:
>
>                         I could successfully built the skeleton driver
>         and now I
>                 can see
>                         it in
>                         the list of available drivers as well!
>                         Thanks a lot for your help. I really appreciate=
 it.
>
>                     :-)
>
>
>                         I have a quick question.
>
>
>
>                         Any idea on how to solve this?
>
>                     No, sorry. I think that's a question for the normal
>         [email protected] <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]>>
>         <mailto:[email protected] <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]>>> list.
>
>                 May be a build
>
>                     problem or a bug.
>
>
>                         Also, Now, if I make any changes to the skeleto=
n
>         driver,
>                 do I
>                         have to
>                         build and install open office every time?
>
>                     No, just replace your copy of the .so file in your
>         office
>                 installation.
>
>                     - oj
>
>
>                     --
>
>
>                     Ocke Janssen | Software Developer
>                     Phone: +40 23646500
>                     Oracle Office
>
>                     ORACLE Deutschland B.V. & Co. KG | Nagelsweg 55 |
>         20097 Hamburg
>
>                     ORACLE Deutschland B.V. & Co. KG
>                     Hauptverwaltung: Riesstr. 25, D-80992 M=FCnchen
>                     Registergericht: Amtsgericht M=FCnchen, HRA 95603
>
>                     Komplement=E4rin: ORACLE Deutschland Verwaltung B.V=
.
>                     Rijnzathe 6, 3454PV De Meern, Niederlande
>                     Handelsregister der Handelskammer
>         Midden-Niederlande, Nr.
>                 30143697
>                     Gesch=E4ftsf=FChrer: J=FCrgen Kunz, Marcel van de M=
olen,
>         Alexander
>                 van der Ven
>
>
>
>                     Oracle is committed to developing practices and pro=
ducts
>                 that help
>                     protect the environment
>
>                     --
>
>
>           -------------------------------------------------------------=
----
>                     To unsubscribe send email to
>         [email protected]
>         <mailto:[email protected]>
>         <mailto:[email protected]
>         <mailto:[email protected]>>
>         <mailto:[email protected]
>         <mailto:[email protected]>
>         <mailto:[email protected]
>         <mailto:[email protected]>>>
>
>                     For additional commands send email to
>         [email protected] <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]=
rg>>
>         <mailto:[email protected]
>         <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]=
rg>>>
>
>                     with Subject: help
>
>
>
>             --
>
>           -------------------------------------------------------------=
----
>             To unsubscribe send email to
>         [email protected]
>         <mailto:[email protected]>
>         <mailto:[email protected]
>         <mailto:[email protected]>>
>             For additional commands send email to
>         [email protected] <mailto:[email protected]>
>         <mailto:[email protected] <mailto:[email protected]=
rg>>
>             with Subject: help
>
>
>
>     --
>     -----------------------------------------------------------------
>     To unsubscribe send email to [email protected]
>     <mailto:[email protected]>
>     For additional commands send email to [email protected]
>     <mailto:[email protected]>
>     with Subject: help
>
>

--
-----------------------------------------------------------------
To unsubscribe send email to [email protected]
For additional commands send email to [email protected]
with Subject: help