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

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

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.

Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
OpenOffice, OpenOffice.org and the seagull logo are registered trademarks of The Apache Software Foundation.
Other names appearing on the site may be trademarks of their respective owners.