Eclipse Data Tools Platform Project Component: Driver Management Framework

Rob Cernich (Sybase), John Graham (Sybase)

 

Introduction

 

This document provides an overview of the Driver Management Framework (DMF) components found in the DTP M1.101205 (Iteration 1) build. The purpose is to describe current functionality, extension points, and API so that the community can evaluate and provide feedback on this component. DMF is housed in the org.eclipse.datatools.connectivity plug-in.

 

Environment

 

 

DMF Purpose

 

There is a large class of tools which need access to run-time specific libraries. For example, the DTP Connection Management Framework (CMF) needs to define connection configuration properties for data sources, and the data access components (or drivers) required to complete the connection also need to be specified. This can be though of as a generalization of the “class path” notion in Java. In most cases, users will not want to redefine driver details for every tool requiring these components. It would be much more convenient, and consistent, to define these values in manner accessible through the Eclipse instance. DMF provides this capability for drivers.

 

DMF User Interface

 

After installing DMF, you will find a new preference page for driver definitions:

 

 

Selecting this entry opens the driver definition preference page:

 

 

In the current build, only one driver template (JDBC) is provided. This template registers itself under a “Database” category, though other templates are free to add whatever categories are appropriate for their case. At the moment, we do not have any driver definitions, so we will create one by choosing the category (‘Database’) and selecting “Add…”:

 

 

Again, only one driver template has been installed, so we will choose that one and enter a name:

 

 

Leaving the “Edit New Driver Instance Immediately” option checked will launch a wizard to complete the driver details when the “OK” button is selected:

 

 

In this case the driver file is going to be the JDBC driver archive. The template specifies any configuration values necessary via the DMF extension point (discussed below) and these are surfaced in the “Properties” table. In this simple example, we are asked for the driver class and the model instance for the given database type (currently these properties are for illustration purposes only, and will be fleshed out in later builds). Providing a required values and selecting “OK” completes the driver definition. It now appears in the list of available driver templates:

 

 

The driver definition “First Test” can then be reused by other components requiring data access.

 

DMF Extension Point

 

Identifier:

org.eclipse.datatools.connectivity.driverExtension

Since:

DTP 0.x

Description:

The driverExtension is used by developers to define templates that describe the mechanical components necessary for opening connections to servers. Users create specific driver definitions using these templates.

The driver definitions are intended to be used in conjunction with connection profiles, where the driver definition specifies the mechanics (e.g. JAR files, driver class names, etc.) necessary for opening the connection and where the connection profile specifies the particulars for connecting to a specific server (e.g. host, port, user ID, password, etc.).

Configuration Markup:

<!ELEMENT extension (category* , driverTemplate)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>



<!ELEMENT category EMPTY>

<!ATTLIST category

id             CDATA #REQUIRED

name           CDATA #IMPLIED

description    CDATA #IMPLIED

parentCategory CDATA #IMPLIED>

This element is used to identify a category. Categories are used to group related connection profile types (e.g. databases).





<!ELEMENT driverTemplate (properties?)>

<!ATTLIST driverTemplate

id               CDATA #REQUIRED

name             CDATA #IMPLIED

description      CDATA #IMPLIED

parentCategory   CDATA #IMPLIED

jarList          CDATA #IMPLIED

createDefault    (true | false) "true"

emptyJarListIsOK (true | false) "false">

This element is used to identify a template.





<!ELEMENT properties (property+)>

Parent container for specific driver definition properties.




<!ELEMENT property EMPTY>

<!ATTLIST property

id          CDATA #REQUIRED

name        CDATA #REQUIRED

description CDATA #IMPLIED

value       CDATA #IMPLIED

visible     (true | false) "true"

example     CDATA #IMPLIED

required    (true | false) "true"

generated   (true | false) "false">

A property definition for a driver definition.





Examples:
API Information:

[Enter API information here.]

Supplied Implementation:

[Enter information about supplied implementation of this extension point.]



Copyright (c) 2004-2005 Sybase, Inc.

All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html

Contributors: brianf - initial API and implementation