Architecture Overview OpenOffice.org Address Book Integration

  1. Architecture Overview OpenOffice.org Address Book Integration
    1. Introduction
    2. Background
    3. Glossary
    4. Supported Address Books
    5. Architecture
    6. References
    7. Appendix - Mozilla files included in OpenOffice.org distribution

Introduction

This document aims to provide an overview of the technologies related to the integration of the address-book feature into OpenOffice.org and Mozilla, a summary of the address-book types supported and their respective underlying API's, and an architecture diagram that shows the shared and unique parts distributed with OpenOffice.org and Mozilla. An appendix lists the Mozilla files installed automatically by OpenOffice.org, including platform variations.

Note: The abbreviation AB in this document is used as a shorthand for "address-book".


Background

OpenOffice.org has it's own open database access API called SDBC (Sun DataBaseConnectivity) which is modeled on the architecture of Java's JDBC. SDBC supports several databases and database-like API's via an extensible provider architecture; ODBC 3.0, JDBC, ADO, dBase and CSV are among the databases and database management systems supported. Each SDBC provider is implemented as a UNO component; UNO is OpenOffice.org's component technology.

Mail applications such as Mozilla Messenger and Microsoft Outlook often have a local address-book (contacts) database, as well as enterprise LDAP-based directory access which is often used as a shared address-book. Mozilla extensions are implemented as XPCOM components; XPCOM is Mozilla's cross-platform ("XP") component (object model) technology.

Glossary

Supported Address Books

Several address-book types are supported. Each source is accessed via an XPCOM provider component, but this in turn uses a specific address-book API as shown in the following table. The address-books shown in bold are available on all Mozilla platforms, the other address-books are only supported on Windows.

Mail Client
Address Book Type
API
Any
LDAP
Mozilla's LDAP XPCOM component
Mozilla
Local address book
Mozilla address-book XPCOM component
Outlook
Outlook Personal Address Book (PAB)
MAPI
Outlook Express / MS Mail
Windows Address Book (WAB)
WAB API

Architecture

As noted above, it was decided to provide open address-book access for both Mozilla's mail client and OpenOffice.org SDBC using a common set of components. Since the integration of new features into Mozilla is achieved using XPCOM, it was decided to develop an adaptor for Outlook and Outlook Express address-books and expose the adaptor using an XPCOM API, and also to support LDAP address-books via an existing XPCOM LDAP component.

OpenOffice.org makes extensive use of it's own UNO object component technology. Similar to the address-book XPCOM component-based provider architecture devised for Mozilla, the SDBC architecture supports providers for many different data sources with each new source having its own adaptor UNO component. To integrate the AbZilla address-book components into OpenOffice.org, an address-book data-source must be exposed via a UNO component.

The architecture chosen was to implement the address-book providers principally using XPCOM to achieve Mozilla integration. These XPCOM interfaces are then wrapped with a private C++ API which is in turn exposed to OpenOffice.org via a UNO interface adaptor. This architecture is summarized in the following diagram:

architecture overview

Figure 1: OpenOffice.org and Mozila, on a common address-book architecture



OpenOffice.org ships two libraries that expose the Mozilla address-book functionality to OpenOffice.org's SDBC framework:

Since the PAB, WAB Moz-AB and Moz-LDAP address-book providers expose XPCOM API's, the core XPCOM infrastructure and related dependencies are required to use them.

For OpenOffice.org to make use of the AbZilla XPCOM-based address-book components, OpenOffice.org now ships with a total 50 Mozilla files, comprising:

The Mozilla libraries shipped with OpenOffice.org are not entirely built from the normal Mozilla CVS trunk as some required bug fixes developed by the project team have not yet been accepted into the standard Mozilla build. These fixes are listed within a summary bug report at http://www.openoffice.org/issues/show_bug.cgi?id=8239. If these fixes were integrated into Mozilla, it would be possible for OpenOffice.org to use the dependent files from a standard Mozilla installation by pointing a Mozilla environment variable at the Mozilla distribution, but as Mozilla is not completely bundled nor can it be assumed to be pre-installed, the Mozilla dependencies are distrbuted with (and installed by) OpenOffice.org.

References

Appendix - Mozilla files included in OpenOffice.org distribution


Size (bytes, on Solaris) Filename Solaris (Sparc and Intel) Linux Win32
222898 component.reg + + +

components/addrbook.dll - - +
1247464 components/libaddrbook.so + + -
633624 components/libmork.so + + -
186160 components/libmozldap.so + + -
1957760 components/libnecko.so + + -
195712 components/libpref.so + + -
221204 components/libprofile.so + + -
513568 components/librdf.so + + -
75776 components/libstrres.so + + -
271228 components/libuconv.so + + -
193132 components/libucvcn.so + + -
123644 components/libucvibm.so + + -
264368 components/libucvja.so + + -
202092 components/libucvko.so + + -
753456 components/libucvlatin.so + + -
187316 components/libucvtw.so + + -
257652 components/libucvtw2.so + + -
82180 components/libunicharutil.so + + -
303864 components/liburiloader.so + + -
112548 components/libvcard.so + + -
744852 components/libxpconnect.so + + -

components/mork.dll - - +

components/mozldap.dll - - +

components/necko.dll - - +
524 components/necko_dns.xpt + + +

components/profile.dll - - +

components/rdf.dll - - +

components/strres.dll - - +

components/ucharuti.dll - - +

components/uconv.dll - - +

components/ucvcn.dll - - +

components/ucvibm.dll - - +

components/ucvja.dll - - +

components/ucvko.dll - - +

components/ucvlatin.dll - - +

components/ucvtw.dll - - +

components/ucvtw2.dll - - +

components/urildr.dll - - +

components/vcard.dll - - +

components/xpc3250.dll - - +
2212 components/xpcom_base.xpt + + +
5103 components/xpcom_components.xpt + + +
7890 components/xpcom_ds.xpt + + +
7806 components/xpcom_io.xpt + + +

components/xpcom_thread.xpt - - +
2513 components/xpcom_threads.xpt + + -
1560 components/xpcom_xpti.xpt + + +

components/xppref32.dll - - +
8698 components/xpti.dat + + +
8698 components/xptitemp.dat + + +
32621 defaults/pref/all.js + + +
2096 defaults/pref/config.js + + +
3590 defaults/pref/editor.js + + +
2668 defaults/pref/initpref.js + + +
2039 defaults/pref/inspector.js + + +
20741 defaults/pref/mailnews.js + + +

defaults/pref/mdn.js - - +
1373 defaults/pref/security-prefs.js + + +
14394 defaults/pref/unix.js + + -

defaults/pref/winpref.js - - +
219 defaults/pref/xpinstall.js + + +

js3250.dll - - +
352592 libldap50.so + + -
745248 libmozjs.so + + -
103388 libmozz.so + + -
654092 libmsgbaseutil.so + + -
370240 libnspr4.so + + -
36592 libplc4.so + + -
14432 libplds4.so + + -
29284 libprldap50.so + + -
2221260 libxpcom.so + + -

mozreg.dll - - +

msgbsutl.dll - - +

nsldap32v50.dll - - +

nsldappr32v50.dll - - +

nspr4.dll - - +

nsreg.dll - - +

plc4.dll - - +

plds4.dll - - +
10244 res/charsetalias.properties + - -

xpcom.dll - - +

zlib.dll - - +


Author: Colm Smyth
Last Modified: $Date: 2003/12/16 07:41:48 $
Copyright © 2002 OpenOffice.org