Index: apichanges.xml
===================================================================
RCS file: /cvs/db/apichanges.xml,v
retrieving revision 1.1
diff -u -r1.1 apichanges.xml
--- apichanges.xml 12 Sep 2005 13:53:22 -0000 1.1
+++ apichanges.xml 7 Dec 2005 20:08:20 -0000
@@ -79,12 +79,27 @@
A displayName property was added to JDBCDriver and the name property was
+ turned into a programmatic name. A new JDBC driver registration DTD
+ (version 1.1) was added containing an element for the new property. A
+ driver-name element was added to the connection registration format, allowing
+ to specify the exact driver to be used by that connection.
<?xml version='1.0'?> <!DOCTYPE driver PUBLIC '-//NetBeans//DTD JDBC Driver 1.0//EN' 'http://www.netbeans.org/dtds/jdbc-driver-1_0.dtd'> <driver> - <name value='PostgreSQL (v7.0 and later)'/> + <name value='postgresql-7'/> + <display-name value='PostgreSQL (v7.0 and later)'/> <class value='org.postgresql.Driver'/> <urls> <url value='file:/folder1/folder2/drivers/pg74.1jdbc3.jar'/> @@ -212,6 +213,7 @@ <!DOCTYPE connection PUBLIC '-//NetBeans//DTD Database Connection 1.0//EN' 'http://www.netbeans.org/dtds/connection-1_0.dtd'> <connection> <driver-class value='org.postgresql.Driver'/> + <driver-name value='postgres-7'/> <database-url value='jdbc:postgresql:test'/> <schema value='public'/> <user value='test'/> Index: src/org/netbeans/api/db/explorer/JDBCDriver.java =================================================================== RCS file: /cvs/db/src/org/netbeans/api/db/explorer/JDBCDriver.java,v retrieving revision 1.2 diff -u -r1.2 JDBCDriver.java --- src/org/netbeans/api/db/explorer/JDBCDriver.java 17 Aug 2005 16:31:57 -0000 1.2 +++ src/org/netbeans/api/db/explorer/JDBCDriver.java 7 Dec 2005 20:08:20 -0000 @@ -25,29 +25,32 @@ private URL[] urls; private String clazz; + private String displayName; private String name; - JDBCDriver(String name, String clazz, URL[] urls) { - assert name != null && clazz != null && urls != null; - this.clazz = clazz; + JDBCDriver(String name, String displayName, String clazz, URL[] urls) { + assert name != null && displayName != null && clazz != null && urls != null; this.name = name; + this.displayName = displayName; + this.clazz = clazz; this.urls = urls; } /** * Creates a new JDBCDriver instance. * - * @param name the name of the driver; must not be null. + * @param name the programmatic name of the driver; must not be null. + * @param displayName the display name of the driver (used for example to display the driver in the UI); must not be null. * @param clazz the JDBC driver class; must not be null. * @param urls the array of the JDBC driver files URLs; must not be null. * * @throws NullPointerException if any of the parameters is null. */ - public static JDBCDriver create(String name, String clazz, URL[] urls) { - if (name == null || clazz == null || urls == null) { + public static JDBCDriver create(String name, String displayName, String clazz, URL[] urls) { + if (name == null || displayName == null || clazz == null || urls == null) { throw new NullPointerException(); } - return new JDBCDriver(name, clazz, urls); + return new JDBCDriver(name, displayName, clazz, urls); } /** @@ -69,15 +72,27 @@ } /** - * Return the user defined driver name. + * Returns the display name of the driver (used for example to display the driver in the UI). + * + * @return the display name of the driver. + */ + public String getDisplayName() { + return displayName; + } + + /** + * Return the programmatic driver name. * - * @return the user defined driver name. + * @return the programmatic driver name. */ public String getName() { return name; } public String toString() { - return "JDBCDriver[name='" + name + ",className='" + clazz + ",urls=" + Arrays.asList(urls) + "]"; + return "JDBCDriver[name='" + name + // NOI18N + "',displayName='" + displayName + // NOI18N + "',className='" + clazz + // NOI18N + "',urls=" + Arrays.asList(urls) + "]"; // NOI18N } } Index: src/org/netbeans/modules/db/explorer/DatabaseConnection.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/DatabaseConnection.java,v retrieving revision 1.45 diff -u -r1.45 DatabaseConnection.java --- src/org/netbeans/modules/db/explorer/DatabaseConnection.java 5 Dec 2005 17:24:07 -0000 1.45 +++ src/org/netbeans/modules/db/explorer/DatabaseConnection.java 7 Dec 2005 20:08:21 -0000 @@ -154,9 +154,10 @@ name = getName(); } - public DatabaseConnection(String driver, String database, String theschema, String user, String password) { + public DatabaseConnection(String driver, String driverName, String database, String theschema, String user, String password) { this(); drv = driver; + drvname = driverName; db = database; usr = user; schema = theschema; Index: src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertor.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertor.java,v retrieving revision 1.5 diff -u -r1.5 DatabaseConnectionConvertor.java --- src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertor.java 4 Oct 2005 13:12:31 -0000 1.5 +++ src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertor.java 7 Dec 2005 20:08:21 -0000 @@ -142,7 +142,6 @@ reader.parse(is); } catch (SAXException ex) { Exception x = ex.getException(); - ex.printStackTrace(); if (x instanceof java.io.IOException) throw (IOException)x; else @@ -165,6 +164,7 @@ private static DatabaseConnection createDatabaseConnection(Handler handler) { DatabaseConnection dbconn = new DatabaseConnection( handler.driverClass, + handler.driverName, handler.connectionUrl, handler.schema, handler.user, @@ -308,6 +308,7 @@ pw.println(""); //NOI18N pw.println(""); //NOI18N pw.println(" "); //NOI18N + pw.println(" "); // NOI18N pw.println(" "); //NOI18N if (instance.getSchema() != null) { pw.println(" "); //NOI18N @@ -325,12 +326,14 @@ private static final class Handler extends DefaultHandler { private static final String ELEMENT_DRIVER_CLASS = "driver-class"; // NOI18N + private static final String ELEMENT_DRIVER_NAME = "driver-name"; // NOI18N private static final String ELEMENT_DATABASE_URL = "database-url"; // NOI18N private static final String ELEMENT_SCHEMA = "schema"; // NOI18N private static final String ELEMENT_USER = "user"; // NOI18N private static final String ATTR_PROPERTY_VALUE = "value"; // NOI18N String driverClass; + String driverName; String connectionUrl; String schema; String user; @@ -345,6 +348,8 @@ String value = attrs.getValue(ATTR_PROPERTY_VALUE); if (ELEMENT_DRIVER_CLASS.equals(qName)) { driverClass = value; + } else if (ELEMENT_DRIVER_NAME.equals(qName)) { + driverName = value; } else if (ELEMENT_DATABASE_URL.equals(qName)) { connectionUrl = value; } else if (ELEMENT_SCHEMA.equals(qName)) { Index: src/org/netbeans/modules/db/explorer/DatabaseDriver.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/DatabaseDriver.java,v retrieving revision 1.13 diff -u -r1.13 DatabaseDriver.java --- src/org/netbeans/modules/db/explorer/DatabaseDriver.java 11 Feb 2004 09:00:52 -0000 1.13 +++ src/org/netbeans/modules/db/explorer/DatabaseDriver.java 7 Dec 2005 20:08:21 -0000 @@ -15,6 +15,9 @@ import java.util.*; import java.io.*; +import org.netbeans.api.db.explorer.JDBCDriver; + +// XXX this class is completely unuseful and should be removed /** * xxx @@ -27,6 +30,7 @@ private String url; private String prefix; private String adaptor; + private transient JDBCDriver jdbcDriver; static final long serialVersionUID =7937512184160164098L; public DatabaseDriver() @@ -45,6 +49,14 @@ url = durl; prefix = dprefix; } + + public DatabaseDriver(String dname, String durl, String dprefix, JDBCDriver djdbcDriver) + { + name = dname; + url = durl; + prefix = dprefix; + jdbcDriver = djdbcDriver; + } public DatabaseDriver(String dname, String durl, String dprefix, String dbadap) { @@ -96,6 +108,10 @@ else if (name.startsWith("Database.Adaptors.")) adaptor = name; //NOI18N else adaptor = "Database.Adaptors."+name; //NOI18N // System.out.println("Metadata adaptor class set = "+adaptor); + } + + public JDBCDriver getJDBCDriver() { + return jdbcDriver; } public boolean equals(Object obj) Index: src/org/netbeans/modules/db/explorer/DatabaseOption.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/DatabaseOption.java,v retrieving revision 1.29 diff -u -r1.29 DatabaseOption.java --- src/org/netbeans/modules/db/explorer/DatabaseOption.java 17 Aug 2005 16:31:59 -0000 1.29 +++ src/org/netbeans/modules/db/explorer/DatabaseOption.java 7 Dec 2005 20:08:21 -0000 @@ -214,7 +214,8 @@ while (it.hasNext()) { drv = (String) it.next(); if (jf.getEntry(drv.replace('.', '/') + ".class") != null) {//NOI18N - JDBCDriver driver = JDBCDriver.create(DriverListUtil.findFreeName(DriverListUtil.getName(drv)), drv, new URL[] {files[i].toURL()}); + String driverName = DriverListUtil.findFreeName(DriverListUtil.getName(drv)); + JDBCDriver driver = JDBCDriver.create(driverName, driverName, drv, new URL[] {files[i].toURL()}); try { JDBCDriverManager.getDefault().addDriver(driver); } catch (DatabaseException e) { Index: src/org/netbeans/modules/db/explorer/DbURLClassLoader.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/DbURLClassLoader.java,v retrieving revision 1.2 diff -u -r1.2 DbURLClassLoader.java --- src/org/netbeans/modules/db/explorer/DbURLClassLoader.java 17 Aug 2005 16:32:00 -0000 1.2 +++ src/org/netbeans/modules/db/explorer/DbURLClassLoader.java 7 Dec 2005 20:08:21 -0000 @@ -7,7 +7,7 @@ * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original - * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun + * Code is Sun Microsystems, Inc. Portions Copyright 1997-2005 Sun * Microsystems, Inc. All Rights Reserved. */ @@ -19,6 +19,8 @@ import java.security.CodeSource; import java.security.PermissionCollection; import java.security.Permissions; +import java.util.Arrays; +import org.openide.ErrorManager; /** * This class loader is used to load JDBC drivers from their locations. @@ -27,9 +29,15 @@ */ public class DbURLClassLoader extends URLClassLoader { + private static final ErrorManager LOGGER = ErrorManager.getDefault().getInstance("org.netbeans.modules.db.explorer"); // NOI18N + private static final boolean LOG = LOGGER.isLoggable(ErrorManager.INFORMATIONAL); + /** Creates a new instance of DbURLClassLoader */ public DbURLClassLoader(URL[] urls) { super(urls); + if (LOG) { + LOGGER.log(ErrorManager.INFORMATIONAL, "Creating DbURLClassLoader for " + Arrays.asList(urls)); // NOI18N + } } protected PermissionCollection getPermissions(CodeSource codesource) { Index: src/org/netbeans/modules/db/explorer/actions/AddDriverAction.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/actions/AddDriverAction.java,v retrieving revision 1.23 diff -u -r1.23 AddDriverAction.java --- src/org/netbeans/modules/db/explorer/actions/AddDriverAction.java 17 Aug 2005 16:32:00 -0000 1.23 +++ src/org/netbeans/modules/db/explorer/actions/AddDriverAction.java 7 Dec 2005 20:08:21 -0000 @@ -48,7 +48,7 @@ ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent event) { if (event.getSource() == DialogDescriptor.OK_OPTION) { - String name = dlgPanel.getName(); + String name = dlgPanel.getDisplayName(); List drvLoc = dlgPanel.getDriverLocation(); String drvClass = dlgPanel.getDriverClass(); @@ -76,7 +76,7 @@ name = drvClass; try { - driver = JDBCDriver.create(name, drvClass, (URL[]) drvLoc.toArray(new URL[drvLoc.size()])); + driver = JDBCDriver.create(name, name, drvClass, (URL[]) drvLoc.toArray(new URL[drvLoc.size()])); JDBCDriverManager.getDefault().addDriver(driver); } catch (DatabaseException exc) { //PENDING Index: src/org/netbeans/modules/db/explorer/actions/ConnectUsingDriverAction.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/actions/ConnectUsingDriverAction.java,v retrieving revision 1.31 diff -u -r1.31 ConnectUsingDriverAction.java --- src/org/netbeans/modules/db/explorer/actions/ConnectUsingDriverAction.java 25 Nov 2005 15:32:30 -0000 1.31 +++ src/org/netbeans/modules/db/explorer/actions/ConnectUsingDriverAction.java 7 Dec 2005 20:08:21 -0000 @@ -64,8 +64,19 @@ public void performAction(Node[] activatedNodes) { Node node = activatedNodes[0]; DriverNodeInfo info = (DriverNodeInfo) node.getCookie(DatabaseNodeInfo.class); - // info.getURL() returns the driver class - new NewConnectionDialogDisplayer().showDialog(info.getName(), info.getURL()); + JDBCDriver driver = info.getJDBCDriver(); + + String driverName, driverClass; + if (driver != null) { + driverName = driver.getName(); + driverClass = driver.getClassName(); + } else { + // no JDBCDriver, have to resort to the info + driverName = info.getName(); + // info.getURL() suprisingly returns the driver class + driverClass = info.getURL(); + } + new NewConnectionDialogDisplayer().showDialog(driverName, driverClass); } public static final class NewConnectionDialogDisplayer extends ConnectionDialogMediator { Index: src/org/netbeans/modules/db/explorer/actions/CustomizeDriverAction.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/actions/CustomizeDriverAction.java,v retrieving revision 1.5 diff -u -r1.5 CustomizeDriverAction.java --- src/org/netbeans/modules/db/explorer/actions/CustomizeDriverAction.java 17 Aug 2005 16:32:01 -0000 1.5 +++ src/org/netbeans/modules/db/explorer/actions/CustomizeDriverAction.java 7 Dec 2005 20:08:21 -0000 @@ -56,19 +56,17 @@ final DriverNodeInfo info = (DriverNodeInfo) n[0].getCookie(DriverNodeInfo.class); if (info == null) return; //should not happen - JDBCDriver[] drvs = JDBCDriverManager.getDefault().getDrivers(info.getURL()); - for (int i = 0; i < drvs.length; i++) - if (activatedNodes[0].getName().equals(drvs[i].getName())) { - drvIndex = i; - break; - } - final AddDriverDialog dlgPanel = new AddDriverDialog(drvs[drvIndex]); + JDBCDriver drv = info.getJDBCDriver(); + if (drv == null) { + return; + } + final AddDriverDialog dlgPanel = new AddDriverDialog(drv); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent event) { if (event.getSource() == DialogDescriptor.OK_OPTION) { - String name = dlgPanel.getName(); + String displayName = dlgPanel.getDisplayName(); List drvLoc = dlgPanel.getDriverLocation(); String drvClass = dlgPanel.getDriverClass(); @@ -91,12 +89,13 @@ closeDialog(); //create driver instance and save it in the XML format - if (name == null || name.equals("")) - name = drvClass; + if (displayName == null || displayName.equals("")) + displayName = drvClass; try { + String oldName = info.getJDBCDriver().getName(); info.delete(); - JDBCDriverManager.getDefault().addDriver(JDBCDriver.create(name, drvClass, (URL[]) drvLoc.toArray(new URL[drvLoc.size()]))); + JDBCDriverManager.getDefault().addDriver(JDBCDriver.create(oldName, displayName, drvClass, (URL[]) drvLoc.toArray(new URL[drvLoc.size()]))); } catch (IOException exc) { //PENDING } catch (DatabaseException exc) { Index: src/org/netbeans/modules/db/explorer/dlg/AddDriverDialog.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/dlg/AddDriverDialog.java,v retrieving revision 1.33 diff -u -r1.33 AddDriverDialog.java --- src/org/netbeans/modules/db/explorer/dlg/AddDriverDialog.java 22 Aug 2005 14:07:29 -0000 1.33 +++ src/org/netbeans/modules/db/explorer/dlg/AddDriverDialog.java 7 Dec 2005 20:08:21 -0000 @@ -95,7 +95,7 @@ } drvClassComboBox.addItem(drv.getClassName()); drvClassComboBox.setSelectedItem(drv.getClassName()); - nameTextField.setText(drv.getName()); + nameTextField.setText(drv.getDisplayName()); } private void initAccessibility() { @@ -406,11 +406,8 @@ private javax.swing.JButton removeButton; // End of variables declaration//GEN-END:variables - public String getName() { - if (nameTextField != null) - return nameTextField.getText(); - else - return super.getName(); + public String getDisplayName() { + return nameTextField.getText(); } public List getDriverLocation() { Index: src/org/netbeans/modules/db/explorer/dlg/NewConnectionPanel.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/dlg/NewConnectionPanel.java,v retrieving revision 1.17 diff -u -r1.17 NewConnectionPanel.java --- src/org/netbeans/modules/db/explorer/dlg/NewConnectionPanel.java 16 Nov 2005 15:41:37 -0000 1.17 +++ src/org/netbeans/modules/db/explorer/dlg/NewConnectionPanel.java 7 Dec 2005 20:08:21 -0000 @@ -452,7 +452,7 @@ } public String toString() { - return driver.getName(); + return driver.getDisplayName(); } } } Index: src/org/netbeans/modules/db/explorer/driver/JDBCDriverConvertor.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/driver/JDBCDriverConvertor.java,v retrieving revision 1.11 diff -u -r1.11 JDBCDriverConvertor.java --- src/org/netbeans/modules/db/explorer/driver/JDBCDriverConvertor.java 13 Oct 2005 12:16:19 -0000 1.11 +++ src/org/netbeans/modules/db/explorer/driver/JDBCDriverConvertor.java 7 Dec 2005 20:08:22 -0000 @@ -7,7 +7,7 @@ * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original - * Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun + * Code is Sun Microsystems, Inc. Portions Copyright 1997-2005 Sun * Microsystems, Inc. All Rights Reserved. */ @@ -60,6 +60,11 @@ public class JDBCDriverConvertor implements Environment.Provider, InstanceCookie.Of { /** + * The reference to the instance of Environment.Provider + */ + private static WeakReference providerRef; + + /** * The path where the drivers are registered in the SystemFileSystem. */ public static final String DRIVERS_PATH = "Databases/JDBCDrivers"; // NOI18N @@ -83,8 +88,12 @@ Reference refDriver = new WeakReference(null); - private static JDBCDriverConvertor createProvider() { - return new JDBCDriverConvertor(); + private static synchronized JDBCDriverConvertor createProvider() { + if (providerRef == null) { + providerRef = new WeakReference(new JDBCDriverConvertor()); + } + + return (JDBCDriverConvertor)providerRef.get(); } private JDBCDriverConvertor() { @@ -163,7 +172,10 @@ return null; } - return JDBCDriver.create(handler.name, handler.clazz, urls); + if (handler.displayName == null) { + handler.displayName = handler.name; + } + return JDBCDriver.create(handler.name, handler.displayName, handler.clazz, urls); } // Other @@ -321,9 +333,10 @@ void write(PrintWriter pw) throws IOException { pw.println(""); //NOI18N - pw.println(""); //NOI18N + pw.println(""); //NOI18N pw.println(" "); //NOI18N pw.println(" "); //NOI18N + pw.println(" "); //NOI18N pw.println(" "); //NOI18N pw.println(" "); //NOI18N URL[] urls = instance.getURLs(); @@ -341,11 +354,13 @@ private static final class Handler extends DefaultHandler { private static final String ELEMENT_NAME = "name"; // NOI18N + private static final String ELEMENT_DISPLAY_NAME = "display-name"; // NOI18N private static final String ELEMENT_CLASS = "class"; // NOI18N private static final String ELEMENT_URL = "url"; // NOI18N private static final String ATTR_PROPERTY_VALUE = "value"; // NOI18N String name; + String displayName; String clazz; LinkedList urls = new LinkedList(); @@ -358,6 +373,8 @@ public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException { if (ELEMENT_NAME.equals(qName)) { name = attrs.getValue(ATTR_PROPERTY_VALUE); + } else if (ELEMENT_DISPLAY_NAME.equals(qName)) { + displayName = attrs.getValue(ATTR_PROPERTY_VALUE); } else if (ELEMENT_CLASS.equals(qName)) { clazz = attrs.getValue(ATTR_PROPERTY_VALUE); } else if (ELEMENT_URL.equals(qName)) { Index: src/org/netbeans/modules/db/explorer/infos/DriverListNodeInfo.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/infos/DriverListNodeInfo.java,v retrieving revision 1.23 diff -u -r1.23 DriverListNodeInfo.java --- src/org/netbeans/modules/db/explorer/infos/DriverListNodeInfo.java 4 Dec 2005 22:21:28 -0000 1.23 +++ src/org/netbeans/modules/db/explorer/infos/DriverListNodeInfo.java 7 Dec 2005 20:08:22 -0000 @@ -63,7 +63,7 @@ file = file.substring(1); sb.append(file); } - DatabaseDriver drv = new DatabaseDriver(drvs[i].getName(), drvs[i].getClassName(), sb.toString()); + DatabaseDriver drv = new DatabaseDriver(drvs[i].getDisplayName(), drvs[i].getClassName(), sb.toString(), drvs[i]); DriverNodeInfo chinfo = (DriverNodeInfo) DatabaseNodeInfo.createNodeInfo(this, DatabaseNode.DRIVER); if (chinfo != null && drv != null) { chinfo.setDatabaseDriver(drv); Index: src/org/netbeans/modules/db/explorer/infos/DriverNodeInfo.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/explorer/infos/DriverNodeInfo.java,v retrieving revision 1.23 diff -u -r1.23 DriverNodeInfo.java --- src/org/netbeans/modules/db/explorer/infos/DriverNodeInfo.java 17 Aug 2005 16:32:05 -0000 1.23 +++ src/org/netbeans/modules/db/explorer/infos/DriverNodeInfo.java 7 Dec 2005 20:08:22 -0000 @@ -41,7 +41,10 @@ public void delete() throws IOException { try { - JDBCDriverManager.getDefault().removeDriver(getJDBCDriver()); + JDBCDriver driver = getJDBCDriver(); + if (driver != null) { + JDBCDriverManager.getDefault().removeDriver(driver); + } } catch (DatabaseException e) { // PENDING } @@ -59,20 +62,19 @@ } private boolean checkDriverFiles() { - JDBCDriver[] drvs = JDBCDriverManager.getDefault().getDrivers(getURL()); - for (int i = 0; i < drvs.length; i++) - if (drvs[i].getName().equals(getName())) - return JDBCDriverSupport.isAvailable(drvs[i]); - - return false; + JDBCDriver driver = getJDBCDriver(); + if (driver != null) { + return JDBCDriverSupport.isAvailable(driver); + } else { + return false; + } } - private JDBCDriver getJDBCDriver() { - JDBCDriver[] drvs = JDBCDriverManager.getDefault().getDrivers(getURL()); - for (int i = 0; i < drvs.length; i++) { - if (drvs[i].getName().equals(getName())) - return drvs[i]; + public JDBCDriver getJDBCDriver() { + DatabaseDriver dbdrv = getDatabaseDriver(); + if (dbdrv == null) { + return null; } - return null; + return dbdrv.getJDBCDriver(); } } Index: src/org/netbeans/modules/db/resources/JDBCODBC.xml =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/resources/JDBCODBC.xml,v retrieving revision 1.2 diff -u -r1.2 JDBCODBC.xml --- src/org/netbeans/modules/db/resources/JDBCODBC.xml 10 Dec 2003 14:59:54 -0000 1.2 +++ src/org/netbeans/modules/db/resources/JDBCODBC.xml 7 Dec 2005 20:08:22 -0000 @@ -1,7 +1,9 @@ + + Index: src/org/netbeans/modules/db/resources/connection-1_0.dtd =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/resources/connection-1_0.dtd,v retrieving revision 1.4 diff -u -r1.4 connection-1_0.dtd --- src/org/netbeans/modules/db/resources/connection-1_0.dtd 7 Dec 2005 08:53:22 -0000 1.4 +++ src/org/netbeans/modules/db/resources/connection-1_0.dtd 7 Dec 2005 20:08:22 -0000 @@ -13,11 +13,17 @@ --> - + + + + + Index: src/org/netbeans/modules/db/resources/jdbc-driver-1_0.dtd =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/resources/jdbc-driver-1_0.dtd,v retrieving revision 1.2 diff -u -r1.2 jdbc-driver-1_0.dtd --- src/org/netbeans/modules/db/resources/jdbc-driver-1_0.dtd 17 Aug 2005 16:32:09 -0000 1.2 +++ src/org/netbeans/modules/db/resources/jdbc-driver-1_0.dtd 7 Dec 2005 20:08:22 -0000 @@ -12,26 +12,26 @@ Microsystems, Inc. All Rights Reserved. --> - - - - - + - + + + + + + + + - - - Index: src/org/netbeans/modules/db/resources/jdbc-driver-1_1.dtd =================================================================== RCS file: src/org/netbeans/modules/db/resources/jdbc-driver-1_1.dtd diff -N src/org/netbeans/modules/db/resources/jdbc-driver-1_1.dtd --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/netbeans/modules/db/resources/jdbc-driver-1_1.dtd 7 Dec 2005 20:08:22 -0000 @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Index: src/org/netbeans/modules/db/resources/mf-layer.xml =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/resources/mf-layer.xml,v retrieving revision 1.11 diff -u -r1.11 mf-layer.xml --- src/org/netbeans/modules/db/resources/mf-layer.xml 17 Aug 2005 16:32:09 -0000 1.11 +++ src/org/netbeans/modules/db/resources/mf-layer.xml 7 Dec 2005 20:08:22 -0000 @@ -52,6 +52,9 @@ + + + @@ -61,6 +64,11 @@ + ++ + + Index: src/org/netbeans/modules/db/util/DriverListUtil.java =================================================================== RCS file: /cvs/db/src/org/netbeans/modules/db/util/DriverListUtil.java,v retrieving revision 1.11 diff -u -r1.11 DriverListUtil.java --- src/org/netbeans/modules/db/util/DriverListUtil.java 6 Nov 2005 21:37:58 -0000 1.11 +++ src/org/netbeans/modules/db/util/DriverListUtil.java 7 Dec 2005 20:08:22 -0000 @@ -270,7 +270,7 @@ Vector names = new Vector(); JDBCDriver[] drivers = JDBCDriverManager.getDefault().getDrivers(); for (int i = 0; i < drivers.length; i++) - names.add(drivers[i].getName()); + names.add(drivers[i].getDisplayName()); if (names.contains(name)) for (int i = 1;;i++) { Index: test/unit/src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertorTest.java =================================================================== RCS file: /cvs/db/test/unit/src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertorTest.java,v retrieving revision 1.4 diff -u -r1.4 DatabaseConnectionConvertorTest.java --- test/unit/src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertorTest.java 15 Sep 2005 20:10:21 -0000 1.4 +++ test/unit/src/org/netbeans/modules/db/explorer/DatabaseConnectionConvertorTest.java 7 Dec 2005 20:08:22 -0000 @@ -41,8 +41,6 @@ */ public class DatabaseConnectionConvertorTest extends TestBase { - private static final String CONNECTION_FILE = "connection.xml"; - public DatabaseConnectionConvertorTest(String testName) { super(testName); } @@ -55,20 +53,21 @@ } public void testReadXml() throws Exception { - FileObject fo = createConnectionFile(CONNECTION_FILE, getConnectionsFolder()); + FileObject fo = createConnectionFile("connection.xml", getConnectionsFolder()); DataObject dobj = DataObject.find(fo); InstanceCookie ic = (InstanceCookie)dobj.getCookie(InstanceCookie.class); assertNotNull(ic); DatabaseConnection conn = (DatabaseConnection)ic.instanceCreate(); assertEquals("org.foo.FooDriver", conn.getDriver()); + assertEquals("foo_driver", conn.getDriverName()); assertEquals("jdbc:foo:localhost", conn.getDatabase()); assertEquals("schema", conn.getSchema()); assertEquals("user", conn.getUser()); } public void testWriteXml() throws Exception { - DatabaseConnection conn = new DatabaseConnection("org.bar.BarDriver", "jdbc:bar:localhost", "schema", "user", null); + DatabaseConnection conn = new DatabaseConnection("org.bar.BarDriver", "bar_driver", "jdbc:bar:localhost", "schema", "user", null); DatabaseConnectionConvertor.create(conn); FileObject fo = getConnectionsFolder().getChildren()[0]; @@ -99,16 +98,17 @@ * Tests that the instance retrieved from the DO created by DCC.create(DCI dbconn) is the same object as dbconn. */ public void testSameInstanceAfterCreate() throws Exception { - DatabaseConnection dbconn = new DatabaseConnection("org.bar.BarDriver", "jdbc:bar:localhost", "schema", "user", null); + DatabaseConnection dbconn = new DatabaseConnection("org.bar.BarDriver", "bar_driver", "jdbc:bar:localhost", "schema", "user", null); DataObject dobj = DatabaseConnectionConvertor.create(dbconn); assertSame(dbconn, ((InstanceCookie)dobj.getCookie(InstanceCookie.class)).instanceCreate()); } public void testSaveOnPropertyChange() throws Exception { - DatabaseConnection dbconn = new DatabaseConnection("a", "b", "c", "d", null); + DatabaseConnection dbconn = new DatabaseConnection("a", "b", "c", "d", "e", null); DatabaseConnectionConvertor.create(dbconn); dbconn.setDriver("org.bar.BarDriver"); + dbconn.setDriverName("bar_driver"); dbconn.setDatabase("jdbc:bar:localhost"); dbconn.setSchema("schema"); dbconn.setUser("user"); @@ -141,7 +141,7 @@ public void testLookup() throws Exception { FileObject parent = getConnectionsFolder(); - createConnectionFile(CONNECTION_FILE, parent); + createConnectionFile("connection.xml", parent); FolderLookup lookup = new FolderLookup(DataFolder.findFolder(parent)); Lookup.Result result = lookup.getLookup().lookup(new Lookup.Template(DatabaseConnection.class)); Collection instances = result.allInstances(); @@ -149,7 +149,7 @@ } public void testImportOldConnections() throws Exception { - DatabaseConnection conn = new DatabaseConnection("org.foo.FooDriver", "jdbc:foo:localhost", "schema", "user", null); + DatabaseConnection conn = new DatabaseConnection("org.foo.FooDriver", "foo_driver", "jdbc:foo:localhost", "schema", "user", null); RootNode.getOption().getConnections().add(conn); DatabaseConnectionConvertor.importOldConnections(); @@ -160,6 +160,7 @@ DatabaseConnection importedConn = (DatabaseConnection)instances.iterator().next(); assertEquals(conn.getDriver(), importedConn.getDriver()); + assertEquals(conn.getDriverName(), importedConn.getDriverName()); assertEquals(conn.getDatabase(), importedConn.getDatabase()); assertEquals(conn.getSchema(), importedConn.getSchema()); assertEquals(conn.getUser(), importedConn.getUser()); @@ -179,6 +180,7 @@ writer.write(""); writer.write(" "); writer.write(" "); + writer.write(" "); writer.write(" "); writer.write(" "); writer.write(" "); Index: test/unit/src/org/netbeans/modules/db/explorer/DbDriverManagerTest.java =================================================================== RCS file: /cvs/db/test/unit/src/org/netbeans/modules/db/explorer/DbDriverManagerTest.java,v retrieving revision 1.3 diff -u -r1.3 DbDriverManagerTest.java --- test/unit/src/org/netbeans/modules/db/explorer/DbDriverManagerTest.java 18 Oct 2005 10:16:50 -0000 1.3 +++ test/unit/src/org/netbeans/modules/db/explorer/DbDriverManagerTest.java 7 Dec 2005 20:08:22 -0000 @@ -192,7 +192,7 @@ private static JDBCDriver createJDBCDriver() { URL url = DbDriverManagerTest.class.getProtectionDomain().getCodeSource().getLocation(); - return JDBCDriver.create("DbDriverManagerTest Driver", "org.netbeans.modules.db.explorer.DbDriverManagerTest$DriverImpl", new URL[] { url }); + return JDBCDriver.create("test_driver", "DbDriverManagerTest Driver", "org.netbeans.modules.db.explorer.DbDriverManagerTest$DriverImpl", new URL[] { url }); } public static final class DriverImpl implements Driver { Index: test/unit/src/org/netbeans/modules/db/explorer/bar-connection.xml =================================================================== RCS file: /cvs/db/test/unit/src/org/netbeans/modules/db/explorer/bar-connection.xml,v retrieving revision 1.3 diff -u -r1.3 bar-connection.xml --- test/unit/src/org/netbeans/modules/db/explorer/bar-connection.xml 12 Sep 2005 14:26:27 -0000 1.3 +++ test/unit/src/org/netbeans/modules/db/explorer/bar-connection.xml 7 Dec 2005 20:08:22 -0000 @@ -2,6 +2,7 @@ + Index: test/unit/src/org/netbeans/modules/db/explorer/driver/JDBCDriverConvertorTest.java =================================================================== RCS file: /cvs/db/test/unit/src/org/netbeans/modules/db/explorer/driver/JDBCDriverConvertorTest.java,v retrieving revision 1.5 diff -u -r1.5 JDBCDriverConvertorTest.java --- test/unit/src/org/netbeans/modules/db/explorer/driver/JDBCDriverConvertorTest.java 13 Oct 2005 12:31:34 -0000 1.5 +++ test/unit/src/org/netbeans/modules/db/explorer/driver/JDBCDriverConvertorTest.java 7 Dec 2005 20:08:22 -0000 @@ -46,8 +46,6 @@ */ public class JDBCDriverConvertorTest extends TestBase { - private static final String DRIVER_FILE = "org_foo_FooDriver.xml"; - public JDBCDriverConvertorTest(String testName) { super(testName); } @@ -60,13 +58,28 @@ } public void testReadXml() throws Exception { - FileObject fo = createDriverFile(DRIVER_FILE, getDriversFolder()); + // DTD version 1.0 + FileObject fo = createDriverFile10("org_foo_FooDriver_10.xml", getDriversFolder()); DataObject dobj = DataObject.find(fo); InstanceCookie ic = (InstanceCookie)dobj.getCookie(InstanceCookie.class); assertNotNull(ic); JDBCDriver driver = (JDBCDriver)ic.instanceCreate(); - assertEquals("Foo Driver", driver.getName()); + assertEquals("foo_driver", driver.getName()); + assertEquals("org.foo.FooDriver", driver.getClassName()); + assertEquals(2, driver.getURLs().length); + assertEquals(new URL("file:///foo1.jar"), driver.getURLs()[0]); + assertEquals(new URL("file:///foo2.jar"), driver.getURLs()[1]); + + // DTD version 1.1 + fo = createDriverFile11("org_foo_FooDriver_11.xml", getDriversFolder()); + dobj = DataObject.find(fo); + ic = (InstanceCookie)dobj.getCookie(InstanceCookie.class); + assertNotNull(ic); + + driver = (JDBCDriver)ic.instanceCreate(); + assertEquals("foo_driver", driver.getName()); + assertEquals("Foo Driver", driver.getDisplayName()); assertEquals("org.foo.FooDriver", driver.getClassName()); assertEquals(2, driver.getURLs().length); assertEquals(new URL("file:///foo1.jar"), driver.getURLs()[0]); @@ -74,7 +87,7 @@ } public void testWriteXml() throws Exception { - JDBCDriver driver = JDBCDriver.create("Bar Driver", "org.bar.BarDriver", new URL[] { new URL("file:///bar1.jar"), new URL("file:///bar2.jar") }); + JDBCDriver driver = JDBCDriver.create("bar_driver", "Bar Driver", "org.bar.BarDriver", new URL[] { new URL("file:///bar1.jar"), new URL("file:///bar2.jar") }); JDBCDriverConvertor.create(driver); FileObject fo = getDriversFolder().getFileObject("org_bar_BarDriver.xml"); @@ -103,7 +116,7 @@ public void testLookup() throws Exception { FileObject parent = getDriversFolder(); - createDriverFile(DRIVER_FILE, parent); + createDriverFile11("org_foo_FooDriver.xml", parent); FolderLookup lookup = new FolderLookup(DataFolder.findFolder(parent)); Lookup.Result result = lookup.getLookup().lookup(new Lookup.Template(JDBCDriver.class)); Collection instances = result.allInstances(); @@ -124,7 +137,7 @@ oldRoot = FileUtil.createFolder(sfs.getRoot(), JDBCDriverConvertor.OLD_DRIVERS_PATH); } URL[] urls = new URL[] { new URL(UNENCODED_URL) }; - createDriverFile("testdriver.xml", oldRoot, urls); + createDriverFile10("testdriver.xml", oldRoot, urls); JDBCDriverConvertor.importOldDrivers(); @@ -138,30 +151,50 @@ Collection instances = result.allInstances(); JDBCDriver drv = (JDBCDriver)instances.iterator().next(); assertEquals(JDBCDriverConvertor.encodeURL(new URL(UNENCODED_URL)), drv.getURLs()[0]); + // assert the imported driver has a display name set + assertEquals(drv.getName(), drv.getDisplayName()); } private FileObject getDriversFolder() { return Repository.getDefault().getDefaultFileSystem().findResource(JDBCDriverConvertor.DRIVERS_PATH); } - private static FileObject createDriverFile(String name, FileObject folder) throws Exception { + private static FileObject createDriverFile10(String fileName, FileObject folder) throws Exception { URL[] urls = new URL[] { new URL("file:///foo1.jar"), new URL("file:///foo2.jar"), }; - return createDriverFile(name, folder, urls); + return createDriverFile10(fileName, folder, urls); } - private static FileObject createDriverFile(String name, FileObject folder, URL[] urls) throws Exception { - FileObject fo = folder.createData(name); + private static FileObject createDriverFile10(String fileName, FileObject folder, URL[] urls) throws Exception { + return createDriverFile(10, fileName, folder, urls); + } + + private static FileObject createDriverFile11(String fileName, FileObject folder) throws Exception { + URL[] urls = new URL[] { + new URL("file:///foo1.jar"), + new URL("file:///foo2.jar"), + }; + return createDriverFile(11, fileName, folder, urls); + } + + private static FileObject createDriverFile(int version, String fileName, FileObject folder, URL[] urls) throws Exception { + String publicIdVer = version == 10 ? "1.0" : "1.1"; + String systemIdVer = version == 10 ? "1_0" : "1_1"; + + FileObject fo = folder.createData(fileName); FileLock lock = fo.lock(); try { OutputStreamWriter writer = new OutputStreamWriter(fo.getOutputStream(lock), "UTF-8"); try { writer.write(""); - writer.write(""); + writer.write(""); writer.write(" "); - writer.write(" "); + writer.write(" "); + if (version == 11) { + writer.write(" "); + } writer.write(" "); writer.write(" "); for (int i = 0; i < urls.length; i++) { Index: test/unit/src/org/netbeans/modules/db/explorer/driver/bar-driver.xml =================================================================== RCS file: /cvs/db/test/unit/src/org/netbeans/modules/db/explorer/driver/bar-driver.xml,v retrieving revision 1.2 diff -u -r1.2 bar-driver.xml --- test/unit/src/org/netbeans/modules/db/explorer/driver/bar-driver.xml 17 Aug 2005 16:32:12 -0000 1.2 +++ test/unit/src/org/netbeans/modules/db/explorer/driver/bar-driver.xml 7 Dec 2005 20:08:22 -0000 @@ -1,7 +1,8 @@ - + + Index: nbproject/project.properties =================================================================== RCS file: /cvs/db/nbproject/project.properties,v retrieving revision 1.12 diff -u -r1.12 project.properties --- nbproject/project.properties 10 Nov 2005 05:54:22 -0000 1.12 +++ nbproject/project.properties 7 Dec 2005 20:08:22 -0000 @@ -13,7 +13,7 @@ javadoc.arch=${basedir}/arch.xml javadoc.apichanges=${basedir}/apichanges.xml -spec.version.base=1.15.0 +spec.version.base=1.16.0 extra.module.files=modules/ext/ddl.jar