You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/10/19 12:23:24 UTC

[2/7] cayenne git commit: Added method to EntityUtil which checks is Object entity contain db attribute path. Refactor templates.

Added method to EntityUtil which checks is Object entity contain db attribute path. Refactor templates.


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/9f9cfd4b
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/9f9cfd4b
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/9f9cfd4b

Branch: refs/heads/master
Commit: 9f9cfd4b4390ed506471f365839366e7771e6b80
Parents: 3124d17
Author: kkomyak <co...@gmail.com>
Authored: Tue Sep 25 17:16:53 2018 +0300
Committer: kkomyak <co...@gmail.com>
Committed: Tue Sep 25 17:16:53 2018 +0300

----------------------------------------------------------------------
 .../java/org/apache/cayenne/gen/EntityUtils.java | 10 ++++++++++
 .../main/resources/templates/v4_1/singleclass.vm |  2 +-
 .../main/resources/templates/v4_1/superclass.vm  |  2 +-
 .../org/apache/cayenne/gen/EntityUtilsTest.java  | 19 +++++++++++++++++++
 4 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/9f9cfd4b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
index cd814db..51eefdc 100644
--- a/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
+++ b/cayenne-cgen/src/main/java/org/apache/cayenne/gen/EntityUtils.java
@@ -20,6 +20,7 @@
 package org.apache.cayenne.gen;
 
 import java.util.Collection;
+import java.util.Objects;
 
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.ObjectId;
@@ -264,6 +265,15 @@ public class EntityUtils {
     }
 
     /**
+     * @since 4.1
+     * Checks is the db attribute declared for some object attribute.
+     * @param id - db attribute
+     */
+    public boolean declaresDbAttribute(String id) {
+        return objEntity.getAttributes().stream().filter(Objects::nonNull).anyMatch(a -> id.equals(a.getDbAttributePath()));
+    }
+
+    /**
      * @return the list of all callback names registered for the entity.
      * @since 3.0
      */

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9f9cfd4b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
index e586651..d2ce30a 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/singleclass.vm
@@ -74,7 +74,7 @@ public#if("true" == "${object.isAbstract()}") abstract#end class ${subClassName}
 #end
 #if( $object.DbEntity )
 #foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
-    #if(!$object.DeclaredAttributes.toString().contains($idAttr.Name))
+    #if(!${entityUtils.declaresDbAttribute($idAttr.Name)})
     public static final Property<Integer> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), Integer.class);
     #end
 #end

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9f9cfd4b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
index ab67534..df3d656 100644
--- a/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
+++ b/cayenne-cgen/src/main/resources/templates/v4_1/superclass.vm
@@ -82,7 +82,7 @@ public abstract class ${superClassName} extends ${baseClassName} {
 #end
 #if( $object.DbEntity )
 #foreach( $idAttr in ${object.DbEntity.PrimaryKeys} )
-    #if(!$object.DeclaredAttributes.toString().contains($idAttr.Name))
+    #if(!${entityUtils.declaresDbAttribute($idAttr.Name)})
     public static final Property<Integer> ${stringUtils.capitalizedAsConstant($idAttr.Name)}_PK_COLUMN = Property.create(ExpressionFactory.dbPathExp("db:${idAttr.Name}"), Integer.class);
     #end
 #end

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9f9cfd4b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java
----------------------------------------------------------------------
diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java
index 21d7162..6bb87dd 100644
--- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java
+++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/EntityUtilsTest.java
@@ -21,6 +21,7 @@ package org.apache.cayenne.gen;
 
 import org.apache.cayenne.map.CallbackDescriptor;
 import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
 import org.junit.After;
 import org.junit.Before;
@@ -29,6 +30,7 @@ import org.junit.Test;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 
@@ -72,4 +74,21 @@ public class EntityUtilsTest {
         
         assertTrue("Contains duplicate callback names.", hasNoDuplicates);
     }
+
+    @Test
+    public void testDeclaresDbAttribute() throws Exception {
+
+        String existKey = "testKey";
+        String notExistKey = "testKey1";
+
+        ObjAttribute attribute = new ObjAttribute(existKey);
+        attribute.setDbAttributePath(existKey);
+        objEntity.addAttribute(attribute);
+
+        entityUtils = new EntityUtils(dataMap, objEntity, "TestBaseClass", "TestSuperClass", "TestSubClass");
+
+        assertTrue(entityUtils.declaresDbAttribute(existKey));
+        assertFalse(entityUtils.declaresDbAttribute(notExistKey));
+
+    }
 }