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
org.eclipse.datatools.connectivity.driverExtension
DTP 0.x
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.).
<!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.
[Enter API information here.]
[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