Architecture Overview OpenOffice.org Address Book Integration
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
-
Mozilla - the open-source project and distribution of the Netscape browser
-
AbZilla - the address-book project for Mozilla
-
XPCOM - an abbreviation of "cross-platform component object model", XPCOM is Mozilla's in-process component middleware technology
-
UNO - OpenOffice.org's distributed cross-platform component object model
-
SDBC - Sun DataBaseConnectivity
-
JDBC - Java's extensible database API
-
Outlook - the full-function licensed version of the Microsoft Outlook Express mail client, including group-calendaring and peer-to-peer workflow
-
Outlook Express - a cut-down mail client based on Microsoft Outlook and bundled with Microsoft Internet Explorer; replaces the MS Mail client
-
WAB - MS Windows AddressBook files (.wab)
-
PAB - MS Exchange® PersonalAddressBook
-
CSV - Comma-SeparatedValues, a generic exchange format for table or other repeating lists of attribute values
-
COM - Common Object Model, Microsoft's simple object component technology
-
MAPI - a traditional C API for full-function messaging, calendaring and address-book
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:
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:
-
libmozab2.so which implements a UNO-based SDBC provider and uses a (private) C++ API provided by libmozabdrv2.so
-
libmozabdrv2.so which exposes a (private) C++ API and uses the AbZila address-book XPCOM-based components (and indirectly uses XPCOM and it's dependencies)
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 essential libraries that implement Mozilla's XPCOM technology
-
configuration files
-
some other dependent libraries including JavaScript to access XPCOM's configuration
-
the library containing the four specific address-book related XPCOM components (PAB, WAB, Mozilla AB, and Mozilla LDAP)
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
-
AbZilla, the Mozilla address-book project - http://abzilla.mozdev.org
-
SDBC, OpenOffice.org's database access framework - http://dba.openoffice.org/
-
XPCOM, Mozilla's object component technology - http://www.mozilla.org/projects/xpcom
-
UNO, OpenOffice.org's object component technology - http://udk.openoffice.org/
-
MAPI, Windows Messaging API - http://msdn.microsoft.com/library/?url=/library/en-us/mapi/html/_mapi1book_legal_information_2.asp?frame=true
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 | - | - | + | |