This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch STABLE-4.0
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 4f89a09ab62883844e36b066738cfeac4083fc79
Author: Nikita Timofeev <[email protected]>
AuthorDate: Wed Sep 18 10:49:41 2019 +0300

    CAY-2616 Modeler: Wrong handling of path with spaces
---
 .../cayenne/modeler/CayenneModelerController.java  | 25 +++++++++++++++-------
 .../cayenne/modeler/ProjectFileChangeTracker.java  | 13 ++++++-----
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
index fadb295..a9c6e43 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.modeler;
 
+import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.modeler.action.ExitAction;
 import org.apache.cayenne.modeler.action.OpenProjectAction;
 import org.apache.cayenne.modeler.dialog.validator.ValidatorDialog;
@@ -165,17 +166,14 @@ public class CayenneModelerController extends 
CayenneController {
     }
 
     public void projectModifiedAction() {
-        String title = 
(projectController.getProject().getConfigurationResource() == null)
-                ? "[New Project]"
-                : 
projectController.getProject().getConfigurationResource().getURL().getPath();
-        frame.setTitle("* - " + title);
+        frame.setTitle("* - " + getProjectLocationString());
     }
 
     public void projectSavedAction() {
         projectController.setDirty(false);
         projectController.updateProjectControllerPreferences();
         updateStatus("Project saved...");
-        
frame.setTitle(projectController.getProject().getConfigurationResource().getURL().getPath());
+        frame.setTitle(getProjectLocationString());
     }
 
     /**
@@ -217,18 +215,17 @@ public class CayenneModelerController extends 
CayenneController {
         // do status update AFTER the project is actually opened...
         if (project.getConfigurationResource() == null) {
             updateStatus("New project created...");
-            frame.setTitle("[New Project]");
         } else {
             updateStatus("Project opened...");
             try {
-                File file = new 
File(project.getConfigurationResource().getURL().toURI());
-                frame.setTitle(file.toString());
                 // update preferences
+                File file = new 
File(project.getConfigurationResource().getURL().toURI());
                 getLastDirectory().setDirectory(file);
                 frame.fireRecentFileListChanged();
             } catch (URISyntaxException ignore) {
             }
         }
+        frame.setTitle(getProjectLocationString());
 
         PROJECT_STATE_UTIL.fireLastState(projectController);
 
@@ -313,4 +310,16 @@ public class CayenneModelerController extends 
CayenneController {
         }
     }
 
+    protected String getProjectLocationString() {
+        if(projectController.getProject().getConfigurationResource() == null) {
+            return "[New Project]";
+        }
+        try {
+            File projectFile = new 
File(projectController.getProject().getConfigurationResource().getURL().toURI());
+            return projectFile.toString();
+        } catch (URISyntaxException e) {
+            throw new CayenneRuntimeException("Invalid project source URL", e);
+        }
+    }
+
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java
index 5889ec3..64105e3 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ProjectFileChangeTracker.java
@@ -109,11 +109,14 @@ public class ProjectFileChangeTracker extends Thread {
 
                     // Currently we are reloading all project
                     if (mediator.getProject() != null) {
-
-                        File fileDirectory = new 
File(mediator.getProject().getConfigurationResource().getURL()
-                                .getPath());
-                        
Application.getInstance().getActionManager().getAction(OpenProjectAction.class)
-                                .openProject(fileDirectory);
+                        try {
+                            File fileDirectory = new 
File(mediator.getProject().getConfigurationResource().getURL().toURI());
+                            
Application.getInstance().getActionManager().getAction(OpenProjectAction.class)
+                                    .openProject(fileDirectory);
+                        } catch (URISyntaxException ex) {
+                            throw new CayenneRuntimeException("Unable to open 
file %s", ex,
+                                    
mediator.getProject().getConfigurationResource().getURL());
+                        }
                     }
                 } else {
                     mediator.setDirty(true);

Reply via email to