This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch STABLE-4.1
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 2c737438191f356b039bb00d7e8b4b58bed7e3e8
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Tue Mar 31 18:36:55 2020 +0300

    CAY-2652 New flush action: unable to use meaningful FK mapped to primitive 
type
---
 .../java/org/apache/cayenne/MeaningfulFKIT.java     | 21 ++++++++++++++++-----
 .../testdo/relationships/auto/_MeaningfulFK.java    | 12 ++++++------
 .../src/test/resources/cayenne-relationships.xml    |  2 ++
 .../src/test/resources/relationships.map.xml        | 17 +++++++++++++++--
 4 files changed, 39 insertions(+), 13 deletions(-)

diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/MeaningfulFKIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/MeaningfulFKIT.java
index f11552c..c87c7d0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/MeaningfulFKIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/MeaningfulFKIT.java
@@ -20,6 +20,7 @@
 package org.apache.cayenne;
 
 import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.query.SelectById;
 import org.apache.cayenne.testdo.relationships.MeaningfulFK;
 import org.apache.cayenne.testdo.relationships.RelationshipHelper;
 import org.apache.cayenne.unit.di.server.CayenneProjects;
@@ -28,9 +29,7 @@ import org.apache.cayenne.unit.di.server.UseServerRuntime;
 import org.apache.cayenne.validation.ValidationResult;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 @UseServerRuntime(CayenneProjects.RELATIONSHIPS_PROJECT)
 public class MeaningfulFKIT extends ServerCase {
@@ -57,12 +56,24 @@ public class MeaningfulFKIT extends ServerCase {
     public void testValidateForSave2() throws Exception {
         MeaningfulFK testObject = context.newObject(MeaningfulFK.class);
 
-        RelationshipHelper related = testObject.getObjectContext().newObject(
-                RelationshipHelper.class);
+        RelationshipHelper related = 
context.newObject(RelationshipHelper.class);
         testObject.setToRelationshipHelper(related);
 
         ValidationResult validation = new ValidationResult();
         testObject.validateForSave(validation);
         assertFalse(validation.hasFailures());
     }
+
+    @Test
+    public void testMeaningfulFKSet() {
+        MeaningfulFK testObject = context.newObject(MeaningfulFK.class);
+
+        RelationshipHelper related = 
context.newObject(RelationshipHelper.class);
+        testObject.setToRelationshipHelper(related);
+
+        context.commitChanges();
+
+        MeaningfulFK testObject2 = SelectById.query(MeaningfulFK.class, 
testObject.getObjectId()).selectOne(context);
+        assertNotEquals(0, testObject2.getRelationshipHelperID());
+    }
 }
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java
 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java
index a14eece..31da394 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/testdo/relationships/auto/_MeaningfulFK.java
@@ -23,16 +23,16 @@ public abstract class _MeaningfulFK extends BaseDataObject {
     public static final Property<Integer> RELATIONSHIP_HELPER_ID = 
Property.create("relationshipHelperID", Integer.class);
     public static final Property<RelationshipHelper> TO_RELATIONSHIP_HELPER = 
Property.create("toRelationshipHelper", RelationshipHelper.class);
 
-    protected Integer relationshipHelperID;
+    protected int relationshipHelperID;
 
     protected Object toRelationshipHelper;
 
-    public void setRelationshipHelperID(Integer relationshipHelperID) {
+    public void setRelationshipHelperID(int relationshipHelperID) {
         beforePropertyWrite("relationshipHelperID", this.relationshipHelperID, 
relationshipHelperID);
         this.relationshipHelperID = relationshipHelperID;
     }
 
-    public Integer getRelationshipHelperID() {
+    public int getRelationshipHelperID() {
         beforePropertyRead("relationshipHelperID");
         return this.relationshipHelperID;
     }
@@ -69,7 +69,7 @@ public abstract class _MeaningfulFK extends BaseDataObject {
 
         switch (propName) {
             case "relationshipHelperID":
-                this.relationshipHelperID = (Integer)val;
+                this.relationshipHelperID = val == null ? 0 : (int)val;
                 break;
             case "toRelationshipHelper":
                 this.toRelationshipHelper = val;
@@ -90,14 +90,14 @@ public abstract class _MeaningfulFK extends BaseDataObject {
     @Override
     protected void writeState(ObjectOutputStream out) throws IOException {
         super.writeState(out);
-        out.writeObject(this.relationshipHelperID);
+        out.writeInt(this.relationshipHelperID);
         out.writeObject(this.toRelationshipHelper);
     }
 
     @Override
     protected void readState(ObjectInputStream in) throws IOException, 
ClassNotFoundException {
         super.readState(in);
-        this.relationshipHelperID = (Integer)in.readObject();
+        this.relationshipHelperID = in.readInt();
         this.toRelationshipHelper = in.readObject();
     }
 
diff --git a/cayenne-server/src/test/resources/cayenne-relationships.xml 
b/cayenne-server/src/test/resources/cayenne-relationships.xml
index 90524b9..6205fb2 100644
--- a/cayenne-server/src/test/resources/cayenne-relationships.xml
+++ b/cayenne-server/src/test/resources/cayenne-relationships.xml
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <domain xmlns="http://cayenne.apache.org/schema/10/domain";
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+        xsi:schemaLocation="http://cayenne.apache.org/schema/10/domain 
https://cayenne.apache.org/schema/10/domain.xsd";
         project-version="10">
        <map name="relationships"/>
 </domain>
diff --git a/cayenne-server/src/test/resources/relationships.map.xml 
b/cayenne-server/src/test/resources/relationships.map.xml
index 55b9fda..b487db9 100644
--- a/cayenne-server/src/test/resources/relationships.map.xml
+++ b/cayenne-server/src/test/resources/relationships.map.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <data-map xmlns="http://cayenne.apache.org/schema/10/modelMap";
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-        xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap 
http://cayenne.apache.org/schema/10/modelMap.xsd";
+        xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap 
https://cayenne.apache.org/schema/10/modelMap.xsd";
         project-version="10">
        <property name="defaultPackage" 
value="org.apache.cayenne.testdo.relationships"/>
        <db-entity name="FK_OF_DIFFERENT_TYPE">
@@ -24,7 +24,7 @@
        </db-entity>
        <obj-entity name="FkOfDifferentType" 
className="org.apache.cayenne.testdo.relationships.FkOfDifferentType" 
dbEntityName="FK_OF_DIFFERENT_TYPE"/>
        <obj-entity name="MeaningfulFK" 
className="org.apache.cayenne.testdo.relationships.MeaningfulFK" 
dbEntityName="MEANINGFUL_FK">
-               <obj-attribute name="relationshipHelperID" 
type="java.lang.Integer" db-attribute-path="RELATIONSHIP_HELPER_ID"/>
+               <obj-attribute name="relationshipHelperID" type="int" 
db-attribute-path="RELATIONSHIP_HELPER_ID"/>
        </obj-entity>
        <obj-entity name="ReflexiveAndToOne" 
className="org.apache.cayenne.testdo.relationships.ReflexiveAndToOne" 
dbEntityName="REFLEXIVE_AND_TO_ONE">
                <obj-attribute name="name" type="java.lang.String" 
db-attribute-path="NAME"/>
@@ -64,4 +64,17 @@
        <obj-relationship name="fksOfDifferentType" source="RelationshipHelper" 
target="FkOfDifferentType" db-relationship-path="fksOfDifferentType"/>
        <obj-relationship name="meanigfulFKs" source="RelationshipHelper" 
target="MeaningfulFK" db-relationship-path="meanigfulFKs"/>
        <obj-relationship name="reflexiveAndToOneArray" 
source="RelationshipHelper" target="ReflexiveAndToOne" 
db-relationship-path="reflexiveAndToOneArray"/>
+       <cgen xmlns="http://cayenne.apache.org/schema/10/cgen";>
+               <destDir>..\java</destDir>
+               <mode>entity</mode>
+               <template>templates/v4_1/subclass.vm</template>
+               <superTemplate>templates/v4_1/superclass.vm</superTemplate>
+               <outputPattern>*.java</outputPattern>
+               <makePairs>true</makePairs>
+               <usePkgPath>true</usePkgPath>
+               <overwrite>false</overwrite>
+               <createPropertyNames>false</createPropertyNames>
+               <createPKProperties>false</createPKProperties>
+               <client>false</client>
+       </cgen>
 </data-map>

Reply via email to