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 <[email protected]>
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() {