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>