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 2020/04/06 16:43:03 UTC
[cayenne] 01/06: CAY-2652 New flush action: unable to use
meaningful FK mapped to primitive type
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 <st...@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>