This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push: new a4502115b CAY-2785 Modeler: improve folder selection for cgen - refactor output-dir related methods in cgen a4502115b is described below commit a4502115bd85fc3ec7d2f392b65c66f171beb372 Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Wed Dec 7 16:51:28 2022 +0300 CAY-2785 Modeler: improve folder selection for cgen - refactor output-dir related methods in cgen --- .../apache/cayenne/tools/CayenneGeneratorTask.java | 2 +- .../org/apache/cayenne/gen/CgenConfiguration.java | 43 ++++++++-------------- .../apache/cayenne/gen/ClassGenerationAction.java | 4 +- .../apache/cayenne/gen/xml/CgenConfigHandler.java | 2 +- .../apache/cayenne/gen/xml/CgenSaverDelegate.java | 6 +-- .../cayenne/gen/BaseTemplatesGenerationTest.java | 2 +- .../apache/cayenne/gen/CgenConfigurationTest.java | 43 +++++++++------------- .../cayenne/gen/ClassGenerationActionTest.java | 5 ++- .../cayenne/gen/xml/CgenSaverDelegateTest.java | 2 +- .../java/org/apache/cayenne/tools/CgenTask.java | 6 ++- .../apache/cayenne/tools/CayenneGeneratorMojo.java | 4 +- .../editor/cgen/GeneratorControllerPanel.java | 10 ++--- 12 files changed, 57 insertions(+), 72 deletions(-) diff --git a/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java b/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java index fda3473f2..9fd856ed2 100644 --- a/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java +++ b/cayenne-ant/src/main/java/org/apache/cayenne/tools/CayenneGeneratorTask.java @@ -185,7 +185,7 @@ public class CayenneGeneratorTask extends CayenneTask { CgenConfiguration cgenConfiguration = new CgenConfiguration(); cgenConfiguration.setDataMap(dataMap); if(destDir != null) { - cgenConfiguration.setRelativePath(destDir.toPath()); + cgenConfiguration.updateOutputPath(destDir.toPath()); } cgenConfiguration.setEncoding(encoding != null ? encoding : cgenConfiguration.getEncoding()); cgenConfiguration.setMakePairs(makepairs != null ? makepairs : cgenConfiguration.isMakePairs()); diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java index a09bec15a..e550f7026 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/CgenConfiguration.java @@ -21,7 +21,6 @@ package org.apache.cayenne.gen; import java.io.Serializable; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -184,8 +183,8 @@ public class CgenConfiguration implements Serializable, XMLSerializable { } /** - * TODO: this should be used in loadin and sa * @param rootProjectPath root path for the Cayenne project this config relates to + * @see #updateOutputPath(Path) */ public void setRootPath(Path rootProjectPath) { if (!Objects.requireNonNull(rootProjectPath).isAbsolute()) { @@ -194,39 +193,20 @@ public class CgenConfiguration implements Serializable, XMLSerializable { this.rootProjectPath = rootProjectPath; } - /** - * Directly set relative (to {@code rootProjectPath}) output directory - * - * @param relPath to set - * @since 5.0 renamed from {@code setRelPath()}* - */ - public void setRelativePath(Path relPath) { - this.cgenOutputRelativePath = relPath; - } - /** * @return cgen output relative path - * TODO: used only it tests, maybe should be hidden completely */ public Path getRelPath() { return cgenOutputRelativePath; } /** - * TODO: used only by TextInput in the Cgen UI, review this - * - * @param pathStr to update relative path with - * @since 5.0 renamed from {@code setRelPath()} - */ - public void updateRelativeOutputPath(String pathStr) { - updateRelativeOutputPath(Paths.get(pathStr)); - } - - /** - * @param path to update relative path with + * Method that calculates output path based on provided {@code Path} and {@code rootProjectPath} + * @param path to update relative path with + * @see #setRootPath(Path) * @since 5.0 */ - public void updateRelativeOutputPath(Path path) { + public void updateOutputPath(Path path) { if (rootProjectPath != null) { if (path.isAbsolute() && rootProjectPath.getRoot().equals(path.getRoot())) { this.cgenOutputRelativePath = rootProjectPath.relativize(path); @@ -237,7 +217,6 @@ public class CgenConfiguration implements Serializable, XMLSerializable { } /** - * TODO: used for the XML serialization, could be changed * @return normalized relative path * @since 5.0 renamed from {@code buildRelPath()} and made package private */ @@ -249,15 +228,25 @@ public class CgenConfiguration implements Serializable, XMLSerializable { } /** - * TODO: change return type to Optional<Path> + * This method calculates effective output directory for the class generator. + * It uses {@code rootProjectPath} and {@code cgenOutputRelativePath}. + * * @return calculated output directory + * @see #setRootPath(Path) + * @see #updateOutputPath(Path) * @since 5.0 renamed from {@code buildPath()} */ public Path buildOutputPath() { if (rootProjectPath == null) { + if(!cgenOutputRelativePath.isAbsolute()) { + throw new ValidationException("Output directory is a relative path but no root is set."); + } + // this should be only in case this is a new unsaved project return cgenOutputRelativePath; } + if(cgenOutputRelativePath == null) { + // this case should be invalid, but let the caller deal with it return null; } diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java index 1d7c5c8ae..b31048473 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/ClassGenerationAction.java @@ -330,7 +330,7 @@ public class ClassGenerationAction { String className = (String) context.get(Artifact.SUPER_CLASS_KEY); String filename = StringUtils.getInstance().replaceWildcardInStringWithString(WILDCARD, cgenConfiguration.getOutputPattern(), className); - File dest = new File(mkpath(new File(cgenConfiguration.buildOutputPath().toString()), packageName), filename); + File dest = new File(mkpath(cgenConfiguration.buildOutputPath().toFile(), packageName), filename); if (dest.exists() && !fileNeedUpdate(dest, cgenConfiguration.getSuperTemplate().getData())) { return null; @@ -349,7 +349,7 @@ public class ClassGenerationAction { String className = (String) context.get(Artifact.SUB_CLASS_KEY); String filename = StringUtils.getInstance().replaceWildcardInStringWithString(WILDCARD, cgenConfiguration.getOutputPattern(), className); - File dest = new File(mkpath(new File(Objects.requireNonNull(cgenConfiguration.buildOutputPath()).toString()), packageName), filename); + File dest = new File(mkpath(cgenConfiguration.buildOutputPath().toFile(), packageName), filename); if (dest.exists()) { // no overwrite of subclasses diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java index 50f8c7907..3e6aca53e 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenConfigHandler.java @@ -151,7 +151,7 @@ public class CgenConfigHandler extends NamespaceAwareNestedTagHandler { if (path.trim().length() == 0) { return; } - configuration.setRelativePath(Paths.get(path)); + configuration.updateOutputPath(Paths.get(path)); } private void createGenerationMode(String mode) { diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java index df532360a..1839f89f1 100644 --- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java +++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/xml/CgenSaverDelegate.java @@ -72,16 +72,16 @@ public class CgenSaverDelegate extends BaseSaverDelegate { if(prevRootPath == null) { Utils.getMavenSrcPathForPath(baseDirectory) .map(Path::of) - .ifPresent(cgenConfiguration::updateRelativeOutputPath); + .ifPresent(cgenConfiguration::updateOutputPath); } if(prevOutputPath != null) { // Update relative path to match with the new root - cgenConfiguration.updateRelativeOutputPath(prevOutputPath); + cgenConfiguration.updateOutputPath(prevOutputPath); } else if(cgenConfiguration.getRelPath() == null) { // No path was set, and we are not in the Maven tree. // Set output dir match with the root, nothing else we could do here - cgenConfiguration.updateRelativeOutputPath(baseDirectory); + cgenConfiguration.updateOutputPath(baseDirectory); } } diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java index 5911d69e8..cebbdd08f 100644 --- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java +++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java @@ -145,7 +145,7 @@ public class BaseTemplatesGenerationTest { cgenConfiguration.addArtifact(artifact); cgenConfiguration.setRootPath(folder.getRoot().toPath()); - cgenConfiguration.setRelativePath(Paths.get(".")); + cgenConfiguration.updateOutputPath(Paths.get(".")); cgenConfiguration.loadEntity(objEntity); cgenConfiguration.setDataMap(dataMap); diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenConfigurationTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenConfigurationTest.java index 23f5c3397..55b5b3a99 100644 --- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenConfigurationTest.java +++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenConfigurationTest.java @@ -54,7 +54,7 @@ public class CgenConfigurationTest { public void equalRootsEqualDirectories() { configuration.setRootPath(Paths.get("C:\\test1\\test2\\test3")); Path relPath = Paths.get("C:\\test1\\test2\\test3"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get(""), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -64,7 +64,7 @@ public class CgenConfigurationTest { public void equalRootsNotEqualDirectories() { configuration.setRootPath(Paths.get("C:\\test1\\test2\\test3")); Path relPath = Paths.get("C:\\test1\\test2\\testAnother"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get("..\\testAnother"), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -74,7 +74,7 @@ public class CgenConfigurationTest { public void equalRootsEmptyDirectories() { configuration.setRootPath(Paths.get("C:\\")); Path relPath = Paths.get("C:\\"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get(""), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -84,7 +84,7 @@ public class CgenConfigurationTest { public void notEqualRootsEqualDirectories() { configuration.setRootPath(Paths.get("C:\\test1\\test2\\test3")); Path relPath = Paths.get("E:\\test1\\test2\\test3"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get("E:\\test1\\test2\\test3"), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -94,7 +94,7 @@ public class CgenConfigurationTest { public void notEqualRootsNotEqualDirectories() { configuration.setRootPath(Paths.get("C:\\test1\\test2\\test3")); Path relPath = Paths.get("E:\\test1\\test2\\testAnother"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get("E:\\test1\\test2\\testAnother"), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -104,7 +104,7 @@ public class CgenConfigurationTest { public void notEqualRootsEmptyDirectories() { configuration.setRootPath(Paths.get("C:\\")); Path relPath = Paths.get("E:\\"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get("E:\\"), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -114,7 +114,7 @@ public class CgenConfigurationTest { public void emptyRootNotEmptyRelPath() { configuration.setRootPath(Paths.get("")); Path relPath = Paths.get("E:\\"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get("E:\\"), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -125,27 +125,20 @@ public class CgenConfigurationTest { configuration.setRootPath(Paths.get("E:\\")); Path relPath = Paths.get(""); - configuration.setRelativePath(relPath); + configuration.updateOutputPath(relPath); assertEquals(relPath, configuration.getRelPath()); assertEquals(Paths.get("E:\\"), configuration.buildOutputPath()); } - @Test(expected = InvalidPathException.class) - public void invalidRelPath() { - configuration.setRootPath(Paths.get("C:\\test1\\test2\\test3")); - configuration.updateRelativeOutputPath("invalidRoot:\\test"); - } - @Test(expected = InvalidPathException.class) public void invalidRootPath() { configuration.setRootPath(Paths.get("invalidRoot:\\test")); - configuration.updateRelativeOutputPath("C:\\test1\\test2\\test3"); } @Test public void nullRootPath() { - configuration.updateRelativeOutputPath("C:\\test1\\test2\\test3"); + configuration.updateOutputPath(Path.of("C:\\test1\\test2\\test3")); assertEquals(Paths.get("C:\\test1\\test2\\test3"), configuration.getRelPath()); assertEquals(Paths.get("C:\\test1\\test2\\test3"), configuration.buildOutputPath()); } @@ -169,7 +162,7 @@ public class CgenConfigurationTest { public void equalRootsEqualDirectories() { configuration.setRootPath(Paths.get("/test1/test2/test3")); Path relPath = Paths.get("/test1/test2/test3"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get(""), configuration.getRelPath()); @@ -180,7 +173,7 @@ public class CgenConfigurationTest { public void equalRootsNotEqualDirectories() { configuration.setRootPath(Paths.get("/test1/test2/test3")); Path relPath = Paths.get("/test1/test2/testAnother"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get("../testAnother"), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -190,7 +183,7 @@ public class CgenConfigurationTest { public void equalRootsEmptyDirectories() { configuration.setRootPath(Paths.get("/")); Path relPath = Paths.get("/"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get(""), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -200,7 +193,7 @@ public class CgenConfigurationTest { public void concatCorrectRootPathAndRelPath() { configuration.setRootPath(Paths.get("/test1/test2/test3")); Path relPath = Paths.get("test1/test2/test3"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get("test1/test2/test3"), configuration.getRelPath()); assertEquals(Paths.get("/test1/test2/test3/test1/test2/test3"), configuration.buildOutputPath()); @@ -210,7 +203,7 @@ public class CgenConfigurationTest { public void emptyRootNotEmptyRelPath() { configuration.setRootPath(Paths.get("")); Path relPath = Paths.get("/"); - configuration.updateRelativeOutputPath(relPath.toString()); + configuration.updateOutputPath(relPath); assertEquals(Paths.get("/"), configuration.getRelPath()); assertEquals(relPath, configuration.buildOutputPath()); @@ -219,7 +212,7 @@ public class CgenConfigurationTest { @Test public void notEmptyRootEmptyRelPath() { configuration.setRootPath(Paths.get("/")); - configuration.updateRelativeOutputPath(""); + configuration.updateOutputPath(Paths.get("")); assertEquals(Paths.get(""), configuration.getRelPath()); assertEquals(Paths.get("/"), configuration.buildOutputPath()); @@ -228,18 +221,18 @@ public class CgenConfigurationTest { @Test(expected = ValidationException.class) public void invalidRootPath() { configuration.setRootPath(Paths.get("invalidRoot:/test")); - configuration.updateRelativeOutputPath("/test1/test2/test3"); + configuration.updateOutputPath(Paths.get("/test1/test2/test3")); } @Test(expected = ValidationException.class) public void concatInvalidRootPathAndRelPath() { configuration.setRootPath(Paths.get("invalidRoot:/test")); - configuration.updateRelativeOutputPath("test1/test2/test3"); + configuration.updateOutputPath(Paths.get("test1/test2/test3")); } @Test public void nullRootPath() { - configuration.updateRelativeOutputPath("/test1/test2/test3"); + configuration.updateOutputPath(Paths.get("/test1/test2/test3")); assertEquals(Paths.get("/test1/test2/test3"), configuration.getRelPath()); assertEquals(Paths.get("/test1/test2/test3"), configuration.buildOutputPath()); } diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java index d5c8544b0..990809207 100644 --- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java +++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/ClassGenerationActionTest.java @@ -20,6 +20,7 @@ package org.apache.cayenne.gen; import java.io.*; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -268,7 +269,7 @@ public class ClassGenerationActionTest extends CgenCase { TemplateType templateType = TemplateType.DATAMAP_SUPERCLASS; cgenConfiguration.setRootPath(tempFolder.getRoot().toPath()); - cgenConfiguration.updateRelativeOutputPath("."); + cgenConfiguration.updateOutputPath(Paths.get(".")); action = new ClassGenerationAction(cgenConfiguration); ObjEntity testEntity1 = new ObjEntity("TEST"); testEntity1.setClassName("TestClass1"); @@ -290,7 +291,7 @@ public class ClassGenerationActionTest extends CgenCase { TemplateType templateType = TemplateType.DATAMAP_SINGLE_CLASS; cgenConfiguration.setRootPath(tempFolder.getRoot().toPath()); - cgenConfiguration.updateRelativeOutputPath("."); + cgenConfiguration.updateOutputPath(Paths.get(".")); action = new ClassGenerationAction(cgenConfiguration); ObjEntity testEntity1 = new ObjEntity("TEST"); testEntity1.setClassName("TestClass1"); diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/xml/CgenSaverDelegateTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/xml/CgenSaverDelegateTest.java index eb2ba18ac..8e5ee5e84 100644 --- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/xml/CgenSaverDelegateTest.java +++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/xml/CgenSaverDelegateTest.java @@ -50,7 +50,7 @@ public class CgenSaverDelegateTest { CgenConfiguration config = new CgenConfiguration(); config.setRootPath(Paths.get("/tmp/src/main/java").toAbsolutePath()); - config.setRelativePath(Paths.get("")); + config.updateOutputPath(Paths.get("")); URL baseURL = Paths.get("/tmp/src/main/resources").toUri().toURL(); diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java index 0d9c6eba4..32c626924 100644 --- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java +++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/CgenTask.java @@ -341,7 +341,9 @@ public class CgenTask extends BaseCayenneTask { } else { getLogger().info("Using default cgen config."); cgenConfiguration = new CgenConfiguration(); - cgenConfiguration.updateRelativeOutputPath(getDestDirFile().getPath()); + if(getDestDirFile() != null) { + cgenConfiguration.updateOutputPath(getDestDirFile().toPath()); + } cgenConfiguration.setDataMap(dataMap); return Collections.singletonList(cgenConfiguration); } @@ -351,7 +353,7 @@ public class CgenTask extends BaseCayenneTask { CgenConfiguration cgenConfiguration = new CgenConfiguration(); cgenConfiguration.setDataMap(dataMap); if(getDestDirFile() != null) { - cgenConfiguration.setRelativePath(getDestDirFile().toPath()); + cgenConfiguration.updateOutputPath(getDestDirFile().toPath()); } cgenConfiguration.setEncoding(encoding != null ? encoding : cgenConfiguration.getEncoding()); cgenConfiguration.setMakePairs(makePairs != null ? makePairs : cgenConfiguration.isMakePairs()); diff --git a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java index 201876b29..78b3d2d19 100644 --- a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java +++ b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java @@ -348,7 +348,7 @@ public class CayenneGeneratorMojo extends AbstractMojo { logger.info("Using default cgen config."); CgenConfiguration cgenConfiguration = new CgenConfiguration(); cgenConfiguration.setDataMap(dataMap); - cgenConfiguration.setRelativePath(defaultDir.toPath()); + cgenConfiguration.updateOutputPath(defaultDir.toPath()); return Collections.singletonList(cgenConfiguration); } } @@ -356,7 +356,7 @@ public class CayenneGeneratorMojo extends AbstractMojo { private CgenConfiguration cgenConfigFromPom(DataMap dataMap) { CgenConfiguration cgenConfiguration = new CgenConfiguration(); cgenConfiguration.setDataMap(dataMap); - cgenConfiguration.setRelativePath(destDir != null ? destDir.toPath() : defaultDir.toPath()); + cgenConfiguration.updateOutputPath(destDir != null ? destDir.toPath() : defaultDir.toPath()); cgenConfiguration.setEncoding(encoding != null ? encoding : cgenConfiguration.getEncoding()); cgenConfiguration.setMakePairs(makePairs != null ? makePairs : cgenConfiguration.isMakePairs()); if (mode != null && mode.equals("datamap")) { diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java index d10b95995..794643e2c 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/cgen/GeneratorControllerPanel.java @@ -27,6 +27,7 @@ import org.apache.cayenne.validation.ValidationException; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JTextField; +import java.nio.file.Path; import java.nio.file.Paths; /** @@ -48,10 +49,11 @@ public class GeneratorControllerPanel extends JPanel { protected void updateModel(String text) throws ValidationException { CgenConfiguration cgenByDataMap = getCgenConfig(); if (cgenByDataMap != null) { - if (cgenByDataMap.getRootPath() == null && !Paths.get(text).isAbsolute()) { + Path path = Paths.get(text); + if (cgenByDataMap.getRootPath() == null && !path.isAbsolute()) { throw new ValidationException("You should save project to use relative path as an output directory."); } - cgenByDataMap.updateRelativeOutputPath(text); + cgenByDataMap.updateOutputPath(path); checkConfigDirty(); } } @@ -68,9 +70,7 @@ public class GeneratorControllerPanel extends JPanel { } protected void checkConfigDirty() { - if (!codeGeneratorController.isInitFromModel()) { - codeGeneratorController.checkCgenConfigDirty(); - } + codeGeneratorController.checkCgenConfigDirty(); } protected CgenConfiguration getCgenConfig() {