Repository: cayenne
Updated Branches:
  refs/heads/master 6bdef0c5b -> 9dce81b8b


CAY-2423

Added checks for configuration in connection to database: additional validation 
for username and password; checks for possibility connect to database; added 
possibility to add empty name and password; save configuration with adapter set 
as "Automatic".


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/123c2fbe
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/123c2fbe
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/123c2fbe

Branch: refs/heads/master
Commit: 123c2fbeba451ea1fdd1d0ed88282e3eac9e38be
Parents: 67aad8a
Author: kkomyak <const1...@gmail.com>
Authored: Wed Apr 4 12:06:12 2018 +0300
Committer: kkomyak <const1...@gmail.com>
Committed: Mon Apr 9 11:47:24 2018 +0300

----------------------------------------------------------------------
 .../modeler/action/GetDbConnectionAction.java   | 17 +++++----
 .../modeler/dialog/db/DataSourceWizard.java     |  2 +
 .../cayenne/modeler/pref/DBConnectionInfo.java  | 39 ++++++++++++--------
 3 files changed, 35 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/123c2fbe/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java
index 17433b0..8328861 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/GetDbConnectionAction.java
@@ -42,7 +42,7 @@ public class GetDbConnectionAction extends 
DBWizardAction<DbActionOptionsDialog>
     private static final String ACTION_NAME = "Configure Connection";
     private static final String ICON_NAME = "icon-dbi-config.png";
 
-    public GetDbConnectionAction(Application application) {
+    public GetDbConnectionAction(final Application application) {
         super(ACTION_NAME, application);
     }
 
@@ -51,22 +51,25 @@ public class GetDbConnectionAction extends 
DBWizardAction<DbActionOptionsDialog>
     }
 
     @Override
-    protected DbActionOptionsDialog createDialog(Collection<String> catalogs, 
Collection<String> schemas,
-                                                 String currentCatalog, String 
currentSchema, int command) {
+    protected DbActionOptionsDialog createDialog(final Collection<String> 
catalogs, final Collection<String> schemas,
+                                                 final String currentCatalog, 
final String currentSchema, final int command) {
         // NOOP
         return null;
     }
 
     @Override
-    public void performAction(ActionEvent e) {
+    public void performAction(final ActionEvent e) {
         final DataSourceWizard connectWizard = 
dataSourceWizardDialog(DIALOG_TITLE);
-        if(connectWizard == null) {
+        if (connectWizard == null) {
             return;
         }
 
-        DataMapDefaults dataMapDefaults = getProjectController().
+        final DataMapDefaults dataMapDefaults = getProjectController().
                 
getDataMapPreferences(getProjectController().getCurrentDataMap());
-        dataMapDefaults.getCurrentPreference().put(DB_ADAPTER_PROPERTY, 
connectWizard.getConnectionInfo().getDbAdapter());
+
+        if (connectWizard.getConnectionInfo().getDbAdapter() != null) {
+            dataMapDefaults.getCurrentPreference().put(DB_ADAPTER_PROPERTY, 
connectWizard.getConnectionInfo().getDbAdapter());
+        }
         dataMapDefaults.getCurrentPreference().put(URL_PROPERTY, 
connectWizard.getConnectionInfo().getUrl());
         dataMapDefaults.getCurrentPreference().put(USER_NAME_PROPERTY, 
connectWizard.getConnectionInfo().getUserName());
         dataMapDefaults.getCurrentPreference().put(PASSWORD_PROPERTY, 
connectWizard.getConnectionInfo().getPassword());

http://git-wip-us.apache.org/repos/asf/cayenne/blob/123c2fbe/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
index 0ecb849..6294041 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/db/DataSourceWizard.java
@@ -214,6 +214,8 @@ public class DataSourceWizard extends CayenneController {
                        this.dataSource = info.makeDataSource(classLoader);
                        try (Connection connection = 
dataSource.getConnection()) {
                        } catch (SQLException ignore) {
+                               reportError("Connection Error", ignore);
+                               return;
                        }
                } catch (Throwable th) {
                        reportError("Connection Error", th);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/123c2fbe/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
----------------------------------------------------------------------
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
index 28ccc97..4295254 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/pref/DBConnectionInfo.java
@@ -36,8 +36,11 @@ import org.apache.cayenne.modeler.ClassLoadingService;
 import org.apache.cayenne.pref.CayennePreference;
 import org.apache.cayenne.util.Util;
 
+import static org.apache.commons.lang3.StringUtils.isBlank;
+
 public class DBConnectionInfo extends CayennePreference {
 
+       private static final String EMPTY_STRING = "";
        public static final String DB_ADAPTER_PROPERTY = "dbAdapter";
        public static final String JDBC_DRIVER_PROPERTY = "jdbcDriver";
        public static final String PASSWORD_PROPERTY = "password";
@@ -62,7 +65,7 @@ public class DBConnectionInfo extends CayennePreference {
                setCurrentPreference(dbConnectionInfoPreferences);
        };
 
-       public DBConnectionInfo(String nameNode, boolean initFromPreferences) {
+       public DBConnectionInfo(final String nameNode, final boolean 
initFromPreferences) {
                this();
                setNodeName(nameNode);
                if (initFromPreferences) {
@@ -79,7 +82,7 @@ public class DBConnectionInfo extends CayennePreference {
        }
 
        @Override
-       public void setObject(CayennePreference object) {
+       public void setObject(final CayennePreference object) {
                if (object instanceof DBConnectionInfo) {
                        setUrl(((DBConnectionInfo) object).getUrl());
                        setUserName(((DBConnectionInfo) object).getUserName());
@@ -125,7 +128,7 @@ public class DBConnectionInfo extends CayennePreference {
                return nodeName;
        }
 
-       public void setNodeName(String nodeName) {
+       public void setNodeName(final String nodeName) {
                this.nodeName = nodeName;
        }
 
@@ -133,7 +136,7 @@ public class DBConnectionInfo extends CayennePreference {
                return dbAdapter;
        }
 
-       public void setDbAdapter(String dbAdapter) {
+       public void setDbAdapter(final String dbAdapter) {
                this.dbAdapter = dbAdapter;
        }
 
@@ -141,15 +144,15 @@ public class DBConnectionInfo extends CayennePreference {
                return jdbcDriver;
        }
 
-       public void setJdbcDriver(String jdbcDriver) {
+       public void setJdbcDriver(final String jdbcDriver) {
                this.jdbcDriver = jdbcDriver;
        }
 
        public String getPassword() {
-               return password;
+               return password == null ? EMPTY_STRING : password;
        }
 
-       public void setPassword(String password) {
+       public void setPassword(final String password) {
                this.password = password;
        }
 
@@ -157,15 +160,15 @@ public class DBConnectionInfo extends CayennePreference {
                return url;
        }
 
-       public void setUrl(String url) {
+       public void setUrl(final String url) {
                this.url = url;
        }
 
        public String getUserName() {
-               return userName;
+               return userName == null ? EMPTY_STRING : userName;
        }
 
-       public void setUserName(String userName) {
+       public void setUserName(final String userName) {
                this.userName = userName;
        }
 
@@ -173,14 +176,14 @@ public class DBConnectionInfo extends CayennePreference {
                return dbConnectionInfoPreferences;
        }
 
-       public void setDbConnectionInfoPreferences(Preferences 
dbConnectionInfoPreferences) {
+       public void setDbConnectionInfoPreferences(final Preferences 
dbConnectionInfoPreferences) {
                this.dbConnectionInfoPreferences = dbConnectionInfoPreferences;
        }
 
        /**
         * Creates a DbAdapter based on configured values.
         */
-       public DbAdapter makeAdapter(ClassLoadingService classLoader) throws 
Exception {
+       public DbAdapter makeAdapter(final ClassLoadingService classLoader) 
throws Exception {
                String adapterClassName = getDbAdapter();
                Application appInstance = Application.getInstance();
 
@@ -203,7 +206,7 @@ public class DBConnectionInfo extends CayennePreference {
         * Returned DataSource is not pooling its connections. It can be 
wrapped in
         * PoolManager if pooling is needed.
         */
-       public DataSource makeDataSource(ClassLoadingService classLoader) 
throws SQLException {
+       public DataSource makeDataSource(final ClassLoadingService classLoader) 
throws SQLException {
 
                // validate...
                if (getJdbcDriver() == null) {
@@ -214,6 +217,10 @@ public class DBConnectionInfo extends CayennePreference {
                        throw new SQLException("No DB URL set.");
                }
 
+               if (!isBlank(getPassword()) && isBlank(getUserName())) {
+                       throw new SQLException("No username when password is 
set.");
+               }
+
                // load driver...
                Driver driver;
 
@@ -230,7 +237,7 @@ public class DBConnectionInfo extends CayennePreference {
        /**
         * Updates another DBConnectionInfo with this object's values.
         */
-       public boolean copyTo(DBConnectionInfo dataSourceInfo) {
+       public boolean copyTo(final DBConnectionInfo dataSourceInfo) {
                boolean updated = false;
 
                if (!Util.nullSafeEquals(dataSourceInfo.getUrl(), getUrl())) {
@@ -269,7 +276,7 @@ public class DBConnectionInfo extends CayennePreference {
         * an adapter update here. </i>
         * </p>
         */
-       public boolean copyTo(DataSourceInfo dataSourceInfo) {
+       public boolean copyTo(final DataSourceInfo dataSourceInfo) {
                boolean updated = false;
 
                if (!Util.nullSafeEquals(dataSourceInfo.getDataSourceUrl(), 
getUrl())) {
@@ -295,7 +302,7 @@ public class DBConnectionInfo extends CayennePreference {
                return updated;
        }
 
-       public boolean copyFrom(DataSourceInfo dataSourceInfo) {
+       public boolean copyFrom(final DataSourceInfo dataSourceInfo) {
                boolean updated = false;
 
                if (!Util.nullSafeEquals(dataSourceInfo.getDataSourceUrl(), 
getUrl())) {

Reply via email to