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

commit ef042ac76c2f146e549e0d36d16e94554b96d42d
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Tue Oct 6 12:25:08 2020 +0300

    CAY-2676 Degredation: Custom class generation templates are not working 
anymore
---
 RELEASE-NOTES.txt                                          |  1 +
 .../java/org/apache/cayenne/gen/ClassGenerationAction.java |  3 +++
 .../org/apache/cayenne/modeler/CodeTemplateManager.java    | 14 +++++++++-----
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index e6e5a35..18783af 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -33,6 +33,7 @@ CAY-2671 QualifierTranslator fails to translate expressions 
with compound PKs/FK
 CAY-2675 A one-to-one relationship with meaningful PK can be nullified in the 
nested context
 CAY-2679 Unstable ordering of relationships in the .map.xml file
 CAY-2681 Modeler: All selected checkboxes cause project to become dirty at 
initialization
+CAY-2676 Degredation: Custom class generation templates are not working anymore
 CAY-2682 Vertical Inheritance: DB-generated PK doesn't propagate from the root 
to children
 
 ----------------------------------
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 d876fc1..caeaaee 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
@@ -315,6 +315,9 @@ public class ClassGenerationAction {
                        props.put("resource.loaders", "cayenne");
                        props.put("resource.loader.cayenne.class", 
ClassGeneratorResourceLoader.class.getName());
                        props.put("resource.loader.cayenne.cache", "false");
+                       if (cgenConfiguration.getRootPath() != null) {
+                               props.put("resource.loader.cayenne.path", 
cgenConfiguration.getRootPath().toString());
+                       }
 
                        VelocityEngine velocityEngine = new VelocityEngine();
                        velocityEngine.init(props);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
index 9b4b4f1..f9f6108 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CodeTemplateManager.java
@@ -19,6 +19,7 @@
 
 package org.apache.cayenne.modeler;
 
+import java.net.URISyntaxException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
@@ -166,13 +167,16 @@ public class CodeTemplateManager {
        public String getTemplatePath(String name, Resource rootPath) {
                Object value = customTemplates.get(name);
                if (value != null) {
-                       if(rootPath != null) {
-                               Path path = 
Paths.get(rootPath.getURL().getPath()).getParent();
-                               value = path.relativize(Paths.get((String) 
value));
+                       try {
+                               if(rootPath != null) {
+                                               Path path = 
Paths.get(rootPath.getURL().toURI()).getParent();
+                                               value = 
path.relativize(Paths.get((String) value));
+                               }
+                               return value.toString();
+                       } catch (URISyntaxException e) {
+                               logger.warn("Path for template named '{}' could 
not be resolved", name);
                        }
-                       return value.toString();
                }
-
                value = standardTemplates.get(name);
                return value != null ? value.toString() : null;
        }

Reply via email to