提交 07bd3594 编写于 作者: S Serge Rider

#6269 Support empty password for JDBC drivers


Former-commit-id: 22435818
上级 481bbfa4
......@@ -21,7 +21,7 @@ import org.eclipse.osgi.util.NLS;
public class CoreMessages extends NLS {
public static final String BUNDLE_NAME = "org.jkiss.dbeaver.core.CoreResources"; //$NON-NLS-1$
public static String actions_menu_about;
public static String actions_menu_check_update;
public static String actions_menu_database;
......@@ -43,7 +43,7 @@ public class CoreMessages extends NLS {
public static String action_menu_transaction_manualcommit_description;
public static String action_menu_transaction_autocommit_description;
public static String action_menu_tools_find_in_navigator;
public static String action_menu_transactionMonitor_totalStatement;
public static String action_menu_transactionMonitor_modifyStatement;
public static String action_menu_transactionMonitor_autocommitMode;
......@@ -55,7 +55,7 @@ public class CoreMessages extends NLS {
public static String actions_navigator_bookmark_title;
public static String common_error_sql;
public static String confirm_exit_title;
public static String confirm_exit_message;
public static String confirm_exit_toggleMessage;
......@@ -97,7 +97,7 @@ public class CoreMessages extends NLS {
public static String dialog_connection_events_checkbox_terminate_at_disconnect;
public static String dialog_connection_events_checkbox_wait_finish;
public static String dialog_connection_events_checkbox_wait_finish_timeout;
public static String dialog_connection_events_label_command;
public static String dialog_connection_events_label_event;
public static String dialog_connection_events_title;
......@@ -392,7 +392,7 @@ public class CoreMessages extends NLS {
public static String toolbar_editors_sql_run_script_name;
public static String toolbar_editors_sql_run_scriptNew_name;
public static String toolbar_editors_sql_run_explain_name;
public static String tools_script_execute_wizard_task_completed;
public static String tools_wizard_dialog_button_start;
public static String tools_wizard_error_task_error_message;
......@@ -407,7 +407,7 @@ public class CoreMessages extends NLS {
public static String tools_wizard_page_log_task_progress;
public static String tools_wizard_page_log_task_progress_log;
public static String tools_wizard_page_log_task_started_at;
public static String editor_file_open_in_explorer;
public static String editor_file_copy_path;
public static String editor_file_rename;
......@@ -593,7 +593,7 @@ public class CoreMessages extends NLS {
public static String dialog_connection_edit_wizard_sql_editor_description;
public static String dialog_connection_edit_wizard_sql_processing;
public static String dialog_connection_edit_wizard_sql_processing_description;
public static String dialog_connection_edit_wizard_conn_change_title;
public static String dialog_connection_edit_wizard_conn_change_question;
public static String dialog_connection_edit_wizard_lock_pwd_title;
......@@ -607,16 +607,19 @@ public class CoreMessages extends NLS {
public static String dialog_edit_driver_setting;
public static String dialog_edit_driver_type_label;
public static String dialog_edit_driver_embedded_label;
public static String dialog_edit_driver_embedded_tip;
public static String dialog_edit_driver_anonymous_label;
public static String dialog_edit_driver_anonymous_tip;
public static String dialog_edit_driver_aloows_empty_password_label;
public static String dialog_edit_driver_aloows_empty_password_tip;
public static String dialog_edit_driver_description;
public static String dialog_edit_driver_edit_maven_title;
public static String dialog_edit_driver_edit_maven_group_id_label;
public static String dialog_edit_driver_edit_maven_artifact_id_label;
public static String dialog_edit_driver_edit_maven_classfier_label;
public static String dialog_edit_driver_edit_maven_version_label;
public static String dialog_edit_driver_text_driver_library;
public static String dialog_edit_driver_text_driver_library;
public static String dialog_edit_driver_info;
public static String dialog_edit_driver_driver;
public static String dialog_edit_driver_library;
......@@ -633,7 +636,7 @@ public class CoreMessages extends NLS {
// Driver download
public static String dialog_driver_download_button_edit_dirver;
public static String dialog_driver_download_button_add_jars;
public static String dialog_driver_download_wizard_title_setting;
public static String dialog_driver_download_wizard_title_upload_files;
public static String dialog_driver_download_wizard_title_setup_files;
......@@ -653,7 +656,7 @@ public class CoreMessages extends NLS {
public static String dialog_driver_download_manual_page_column_description;
public static String dialog_driver_download_manual_page_yes;
public static String dialog_driver_download_manual_page_no;
public static String dialog_driver_download_auto_page_auto_download;
public static String dialog_driver_download_auto_page_download_driver_files;
public static String dialog_driver_download_auto_page_download_specific_driver_files;
......
......@@ -578,8 +578,11 @@ dialog_connection_edit_wizard_error_md5_msg =Can't generate password hash
## Driver edit ##
dialog_edit_driver_type_label = Driver Type
dialog_edit_driver_embedded_label = Embedded
dialog_edit_driver_embedded_tip = Embedded driver. Doesn't need any network configuration.\nAlso only one shared connection is used for embedded drivers.
dialog_edit_driver_anonymous_label = No authentication
dialog_edit_driver_anonymous_tip = Driver doesn't require user authentication
dialog_edit_driver_aloows_empty_password_label = Allow Empty Password
dialog_edit_driver_aloows_empty_password_tip = Driver allows empty password. Otherwise "empty password" = "no password".
dialog_edit_driver_setting = Settings
dialog_edit_driver_description = Description
dialog_edit_driver_edit_maven_title = Edit Maven Artifact
......
......@@ -97,6 +97,7 @@ public class DriverEditDialog extends HelpEnabledDialog {
private ClientHomesPanel clientHomesPanel;
private Button embeddedDriverCheck;
private Button anonymousDriverCheck;
private Button allowsEmptyPasswordCheck;
private boolean showAddFiles = false;
......@@ -247,15 +248,23 @@ public class DriverEditDialog extends HelpEnabledDialog {
driverPortText.setLayoutData(new GridData(SWT.NONE));
driverPortText.addModifyListener(e -> onChangeProperty());
embeddedDriverCheck = UIUtils.createCheckbox(propsGroup, CoreMessages.dialog_edit_driver_embedded_label, driver.isEmbedded());
Composite optionsPanel = UIUtils.createComposite(propsGroup, 3);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
optionsPanel.setLayoutData(gd);
embeddedDriverCheck = UIUtils.createCheckbox(optionsPanel, CoreMessages.dialog_edit_driver_embedded_label, CoreMessages.dialog_edit_driver_embedded_tip, driver.isEmbedded(), 1);
embeddedDriverCheck.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
anonymousDriverCheck = UIUtils.createCheckbox(propsGroup, CoreMessages.dialog_edit_driver_anonymous_label, CoreMessages.dialog_edit_driver_anonymous_tip, driver.isAnonymousAccess(), 1);
anonymousDriverCheck = UIUtils.createCheckbox(optionsPanel, CoreMessages.dialog_edit_driver_anonymous_label, CoreMessages.dialog_edit_driver_anonymous_tip, driver.isAnonymousAccess(), 1);
anonymousDriverCheck.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
allowsEmptyPasswordCheck = UIUtils.createCheckbox(optionsPanel, CoreMessages.dialog_edit_driver_aloows_empty_password_label, CoreMessages.dialog_edit_driver_aloows_empty_password_tip, driver.isAnonymousAccess(), 1);
allowsEmptyPasswordCheck.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
if (isReadOnly) {
embeddedDriverCheck.setEnabled(false);
anonymousDriverCheck.setEnabled(false);
allowsEmptyPasswordCheck.setEnabled(false);
}
}
......@@ -744,6 +753,7 @@ public class DriverEditDialog extends HelpEnabledDialog {
embeddedDriverCheck.setSelection(driver.isEmbedded());
anonymousDriverCheck.setSelection(driver.isAnonymousAccess());
allowsEmptyPasswordCheck.setSelection(driver.isAllowsEmptyPassword());
if (original) {
resetLibraries(true);
......@@ -800,6 +810,7 @@ public class DriverEditDialog extends HelpEnabledDialog {
driver.setDriverDefaultPort(driverPortText.getText());
driver.setEmbedded(embeddedDriverCheck.getSelection());
driver.setAnonymousAccess(anonymousDriverCheck.getSelection());
driver.setAllowsEmptyPassword(allowsEmptyPasswordCheck.getSelection());
// driver.setAnonymousAccess(anonymousCheck.getSelection());
driver.setModified(true);
......
......@@ -330,8 +330,8 @@ public class ExasolDataSource extends JDBCDataSource
}
@Override
protected Properties getAllConnectionProperties(DBRProgressMonitor monitor, String purpose,
DBPConnectionConfiguration connectionInfo) throws DBCException {
protected Properties getAllConnectionProperties(@NotNull DBRProgressMonitor monitor, String purpose,
DBPConnectionConfiguration connectionInfo) throws DBCException {
Properties props = super.getAllConnectionProperties(monitor, purpose, connectionInfo);
......
......@@ -74,7 +74,7 @@ public class SQLServerDataSource extends JDBCDataSource implements DBSObjectSele
}
@Override
protected Properties getAllConnectionProperties(DBRProgressMonitor monitor, String purpose, DBPConnectionConfiguration connectionInfo) throws DBCException {
protected Properties getAllConnectionProperties(@NotNull DBRProgressMonitor monitor, String purpose, DBPConnectionConfiguration connectionInfo) throws DBCException {
Properties properties = super.getAllConnectionProperties(monitor, purpose, connectionInfo);
if (!getContainer().getPreferenceStore().getBoolean(ModelPreferences.META_CLIENT_NAME_DISABLE)) {
......
......@@ -88,6 +88,7 @@ public interface DBPDriver extends DBPNamedObject
boolean isEmbedded();
boolean isAnonymousAccess();
boolean isAllowsEmptyPassword();
boolean isLicenseRequired();
boolean isCustomDriverLoader();
boolean isUseURL();
......
......@@ -217,8 +217,13 @@ public abstract class JDBCDataSource
if (!CommonUtils.isEmpty(connectionInfo.getUserName())) {
connectProps.put(DBConstants.DATA_SOURCE_PROPERTY_USER, getConnectionUserName(connectionInfo));
}
if (!CommonUtils.isEmpty(connectionInfo.getUserPassword())) {
connectProps.put(DBConstants.DATA_SOURCE_PROPERTY_PASSWORD, getConnectionUserPassword(connectionInfo));
boolean allowsEmptyPassword = getContainer().getDriver().isAllowsEmptyPassword();
String password = getConnectionUserPassword(connectionInfo);
if (password == null && allowsEmptyPassword) {
password = "";
}
if (!CommonUtils.isEmpty(password) || (allowsEmptyPassword && !CommonUtils.isEmpty(getConnectionUserName(connectionInfo)))) {
connectProps.put(DBConstants.DATA_SOURCE_PROPERTY_PASSWORD, password);
}
return connectProps;
}
......
......@@ -123,6 +123,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver {
private boolean clientRequired;
private boolean supportsDriverProperties;
private boolean anonymousAccess;
private boolean allowsEmptyPassword;
private boolean licenseRequired;
private boolean customDriverLoader;
private boolean useURLTemplate;
......@@ -203,6 +204,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver {
this.clientRequired = copyFrom.clientRequired;
this.supportsDriverProperties = copyFrom.supportsDriverProperties;
this.anonymousAccess = copyFrom.anonymousAccess;
this.allowsEmptyPassword = copyFrom.allowsEmptyPassword;
this.licenseRequired = copyFrom.licenseRequired;
this.customDriverLoader = copyFrom.customDriverLoader;
this.useURLTemplate = copyFrom.customDriverLoader;
......@@ -256,6 +258,7 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver {
this.supportsDriverProperties = CommonUtils.getBoolean(config.getAttribute(RegistryConstants.ATTR_SUPPORTS_DRIVER_PROPERTIES), true);
this.embedded = CommonUtils.getBoolean(config.getAttribute(RegistryConstants.ATTR_EMBEDDED));
this.anonymousAccess = CommonUtils.getBoolean(config.getAttribute(RegistryConstants.ATTR_ANONYMOUS));
this.allowsEmptyPassword = CommonUtils.getBoolean("allowsEmptyPassword");
this.licenseRequired = CommonUtils.getBoolean(config.getAttribute(RegistryConstants.ATTR_LICENSE_REQUIRED));
this.custom = false;
this.isLoaded = false;
......@@ -642,6 +645,15 @@ public class DriverDescriptor extends AbstractDescriptor implements DBPDriver {
this.anonymousAccess = anonymousAccess;
}
@Override
public boolean isAllowsEmptyPassword() {
return allowsEmptyPassword;
}
public void setAllowsEmptyPassword(boolean allowsEmptyPassword) {
this.allowsEmptyPassword = allowsEmptyPassword;
}
@Override
public boolean isLicenseRequired() {
return licenseRequired;
......
......@@ -206,6 +206,7 @@ public class DriverDescriptorSerializerLegacy extends DriverDescriptorSerializer
curDriver.setSampleURL(atts.getValue(RegistryConstants.ATTR_URL));
curDriver.setDriverDefaultPort(atts.getValue(RegistryConstants.ATTR_PORT));
curDriver.setEmbedded(CommonUtils.getBoolean(atts.getValue(RegistryConstants.ATTR_EMBEDDED), false));
curDriver.setAllowsEmptyPassword(CommonUtils.getBoolean(atts.getValue("allowsEmptyPassword"), false));
}
if (atts.getValue(RegistryConstants.ATTR_CUSTOM_DRIVER_LOADER) != null) {
curDriver.setCustomDriverLoader((
......
......@@ -52,23 +52,26 @@ public class DriverDescriptorSerializerModern extends DriverDescriptorSerializer
JSONUtils.fieldNE(json, RegistryConstants.ATTR_PROVIDER, driver.getProviderDescriptor().getId());
}
JSONUtils.field(json, RegistryConstants.ATTR_ID, driver.getId());
if (driver.isDisabled()) {
JSONUtils.field(json, RegistryConstants.ATTR_DISABLED, true);
}
if (!CommonUtils.isEmpty(driver.getCategory())) {
JSONUtils.fieldNE(json, RegistryConstants.ATTR_CATEGORY, driver.getCategory());
}
JSONUtils.fieldNE(json, RegistryConstants.ATTR_CATEGORIES, String.join(",", driver.getCategories()));
JSONUtils.field(json, RegistryConstants.ATTR_CUSTOM, driver.isCustom());
JSONUtils.field(json, RegistryConstants.ATTR_EMBEDDED, driver.isEmbedded());
JSONUtils.field(json, RegistryConstants.ATTR_NAME, driver.getName());
JSONUtils.field(json, RegistryConstants.ATTR_CLASS, driver.getDriverClassName());
JSONUtils.fieldNE(json, RegistryConstants.ATTR_URL, driver.getSampleURL());
JSONUtils.fieldNE(json, RegistryConstants.ATTR_PORT, driver.getDefaultPort());
JSONUtils.fieldNE(json, RegistryConstants.ATTR_DESCRIPTION, driver.getDescription());
JSONUtils.fieldNE(json, RegistryConstants.ATTR_CATEGORIES, String.join(",", driver.getCategories()));
JSONUtils.field(json, RegistryConstants.ATTR_CUSTOM, driver.isCustom());
JSONUtils.field(json, RegistryConstants.ATTR_EMBEDDED, driver.isEmbedded());
JSONUtils.field(json, RegistryConstants.ATTR_ANONYMOUS, driver.isAnonymousAccess());
JSONUtils.field(json, "allowsEmptyPassword", driver.isAnonymousAccess());
if (driver.isCustomDriverLoader()) {
JSONUtils.field(json, RegistryConstants.ATTR_CUSTOM_DRIVER_LOADER, driver.isCustomDriverLoader());
}
if (driver.isDisabled()) {
JSONUtils.field(json, RegistryConstants.ATTR_DISABLED, true);
}
if (!CommonUtils.isEmpty(driver.getCategory())) {
JSONUtils.fieldNE(json, RegistryConstants.ATTR_CATEGORY, driver.getCategory());
}
if (!CommonUtils.isEmpty(driver.getDriverLibraries())) {
json.name("libraries");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册