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