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) { |