This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 215480
Collapse All | Expand All

(-)a/db/src/org/netbeans/modules/db/explorer/DbDriverManager.java (-1 / +8 lines)
Lines 223-235 Link Here
223
     */
223
     */
224
    public Driver getDriver(JDBCDriver jdbcDriver) throws SQLException {
224
    public Driver getDriver(JDBCDriver jdbcDriver) throws SQLException {
225
        ClassLoader l = getClassLoader(jdbcDriver);
225
        ClassLoader l = getClassLoader(jdbcDriver);
226
        Object driver;
226
        try {
227
        try {
227
            return (Driver)Class.forName(jdbcDriver.getClassName(), true, l).newInstance();
228
            driver = Class.forName(jdbcDriver.getClassName(), true, l).newInstance();
228
        } catch (Exception e) {
229
        } catch (Exception e) {
229
            SQLException sqlex = createDriverNotFoundException();
230
            SQLException sqlex = createDriverNotFoundException();
230
            sqlex.initCause(e);
231
            sqlex.initCause(e);
231
            throw sqlex;
232
            throw sqlex;
232
        }
233
        }
234
        if (driver instanceof Driver) {
235
            return (Driver) driver;
236
        } else {
237
            throw new SQLException(driver.getClass().getName()
238
                    + " is not a driver");                              //NOI18N
239
        }
233
    }
240
    }
234
    
241
    
235
    /**
242
    /**
(-)a/db/src/org/netbeans/modules/db/explorer/dlg/AddDriverDialog.form (-1 / +1 lines)
Lines 1-4 Link Here
1
<?xml version="1.1" encoding="UTF-8" ?>
1
<?xml version="1.0" encoding="UTF-8" ?>
2
2
3
<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
3
<Form version="1.2" maxVersion="1.2" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
4
  <AuxValues>
4
  <AuxValues>
(-)a/db/src/org/netbeans/modules/db/explorer/dlg/AddDriverDialog.java (-7 / +16 lines)
Lines 104-109 Link Here
104
    private static final Logger LOGGER = Logger.getLogger(AddDriverDialog.class.getName());
104
    private static final Logger LOGGER = Logger.getLogger(AddDriverDialog.class.getName());
105
    private JDBCDriver drv;
105
    private JDBCDriver drv;
106
    private final AddConnectionWizard wd;
106
    private final AddConnectionWizard wd;
107
    private volatile URLClassLoader jarClassLoader = null;
107
108
108
    /** Creates new AddDriverDialog.
109
    /** Creates new AddDriverDialog.
109
     * @param driverNode driver node to be customized or null to create a new one
110
     * @param driverNode driver node to be customized or null to create a new one
Lines 578-583 Link Here
578
                //PENDING
579
                //PENDING
579
            }
580
            }
580
        }
581
        }
582
        getJarClassLoader(); // init class loader while the JAR file is cached
581
    }
583
    }
582
    
584
    
583
    private void findDriverClassByInspection() {
585
    private void findDriverClassByInspection() {
Lines 587-599 Link Here
587
            @Override
589
            @Override
588
            public void run() {
590
            public void run() {
589
                startProgress();
591
                startProgress();
590
                                     
592
                URLClassLoader jarloader = getJarClassLoader();
591
                // This classloader is used to load classes
592
                // from the jar files for the driver.  We can then use
593
                // introspection to see if a class in one of these jar files
594
                // implements java.sql.Driver
595
                URLClassLoader jarloader = 
596
                    new URLClassLoader(drvs.toArray(new URL[drvs.size ()]),this.getClass ().getClassLoader ());
597
593
598
                for (int i = 0; i < dlm.size(); i++) {
594
                for (int i = 0; i < dlm.size(); i++) {
599
                    try {
595
                    try {
Lines 631-636 Link Here
631
        }, 0);
627
        }, 0);
632
    }
628
    }
633
    
629
    
630
    private URLClassLoader getJarClassLoader() {
631
        // This classloader is used to load classes
632
        // from the jar files for the driver.  We can then use
633
        // introspection to see if a class in one of these jar files
634
        // implements java.sql.Driver
635
        jarClassLoader =
636
                new URLClassLoader(drvs.toArray(new URL[drvs.size()]),
637
                this.getClass().getClassLoader());
638
        return jarClassLoader;
639
    }
634
    private void addDriverClass(String drv) {
640
    private void addDriverClass(String drv) {
635
        if (((DefaultComboBoxModel) drvClassComboBox.getModel()).getIndexOf(drv) < 0) {
641
        if (((DefaultComboBoxModel) drvClassComboBox.getModel()).getIndexOf(drv) < 0) {
636
            drvClassComboBox.addItem(drv);
642
            drvClassComboBox.addItem(drv);
Lines 692-697 Link Here
692
            }
698
            }
693
        } else if (drvClassComboBox.getEditor().getItem().toString().length() == 0) {
699
        } else if (drvClassComboBox.getEditor().getItem().toString().length() == 0) {
694
            message = NbBundle.getMessage(AddDriverDialog.class, "AddDriverMissingClass");
700
            message = NbBundle.getMessage(AddDriverDialog.class, "AddDriverMissingClass");
701
        } else if (jarClassLoader != null && !isDriverClass(jarClassLoader,
702
                drvClassComboBox.getEditor().getItem().toString())) {
703
            message = NbBundle.getMessage(AddDriverDialog.class, "AddDriverNotJavaSqlDriver"); //NOI18N
695
        } else if (nameTextField.getText().length() == 0) {
704
        } else if (nameTextField.getText().length() == 0) {
696
            message = NbBundle.getMessage(AddDriverDialog.class, "AddDriverMissingName");
705
            message = NbBundle.getMessage(AddDriverDialog.class, "AddDriverMissingName");
697
        } else if (!customizer && nameTextField.getText().length() > 0) {
706
        } else if (!customizer && nameTextField.getText().length() > 0) {
(-)a/db/src/org/netbeans/modules/db/explorer/dlg/Bundle.properties (+1 lines)
Lines 56-61 Link Here
56
AddDriverMissingDriverFiles=<Missing Driver Files>
56
AddDriverMissingDriverFiles=<Missing Driver Files>
57
AddDriverDuplicateFile=Driver File {0} is already added.
57
AddDriverDuplicateFile=Driver File {0} is already added.
58
AddDriverMissingClass=Driver Class is missing.
58
AddDriverMissingClass=Driver Class is missing.
59
AddDriverNotJavaSqlDriver=Specified class is not a driver (java.sql.Driver).
59
AddDriverMissingName=Driver Name is missing.
60
AddDriverMissingName=Driver Name is missing.
60
AddDriverDuplicateName=Driver Name is already used.
61
AddDriverDuplicateName=Driver Name is already used.
61
ACS_AddDriverDialogA11yDesc=New JDBC driver dialog.
62
ACS_AddDriverDialogA11yDesc=New JDBC driver dialog.

Return to bug 215480