Author: tchemit Date: 2012-05-25 18:40:59 +0200 (Fri, 25 May 2012) New Revision: 2539 Url: http://nuiton.org/repositories/revision/topia/2539 Log: add not-null constraints Added: trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/mapping/test12/ trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/mapping/test12/EntityWithBasicNotNullFieldsTest.java Modified: trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.properties trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.zargo trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityJPAMappingGenerator.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityJPAMappingGenerator.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityJPAMappingGenerator.java 2012-05-25 16:31:24 UTC (rev 2538) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityJPAMappingGenerator.java 2012-05-25 16:40:59 UTC (rev 2539) @@ -422,8 +422,11 @@ addAttribute(columnAttributes, ATTRIBUTE_LENGTH, lengthTagValue); } String notNullTagValue = TopiaGeneratorUtil.getNotNullTagValue(attr); - if ("true".equals(notNullTagValue)) { + if ("true".equals(notNullTagValue) || + (TopiaGeneratorUtil.isNaturalId(attr) && + !"false".equals(notNullTagValue))) { + // notNull to true or default value for a natural Id // not optional addAttribute(xmlAttributes, ATTRIBUTE_OPTIONAL, false); addAttribute(columnAttributes, ATTRIBUTE_NULLABLE, false); Modified: trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.properties =================================================================== --- trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.properties 2012-05-25 16:31:24 UTC (rev 2538) +++ trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.properties 2012-05-25 16:40:59 UTC (rev 2539) @@ -24,3 +24,7 @@ ### model.tagvalue.generateOperatorForDAOHelper=true model.tagvalue.constantPrefix=PROPERTY_ + +org.nuiton.topia.tck.mapping.test12.A12A.attribute.integerField.tagValue.notNull=true +org.nuiton.topia.tck.mapping.test12.A12A.attribute.dateField.tagValue.notNull=true +org.nuiton.topia.tck.mapping.test12.A12A.attribute.stringField.tagValue.notNull=true Modified: trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.zargo =================================================================== (Binary files differ) Added: trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/mapping/test12/EntityWithBasicNotNullFieldsTest.java =================================================================== --- trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/mapping/test12/EntityWithBasicNotNullFieldsTest.java (rev 0) +++ trunk/topia-persistence-tck/src/test/java/org/nuiton/topia/tck/mapping/test12/EntityWithBasicNotNullFieldsTest.java 2012-05-25 16:40:59 UTC (rev 2539) @@ -0,0 +1,65 @@ +package org.nuiton.topia.tck.mapping.test12; + +import junit.framework.Assert; +import org.junit.Before; +import org.junit.Test; +import org.nuiton.topia.TopiaContext; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.tck.mapping.AbstractMappingTest; + +import java.util.Date; + +/** + * Tests entity with basic {@code not null} fields. + * + * @author tchemit <chemit@codelutin.com> + * @since 3.0 + */ +public class EntityWithBasicNotNullFieldsTest extends AbstractMappingTest { + + protected TopiaContext tx; + + protected A12ADAO aDAO; + + @Before + public void before() throws TopiaException { + tx = db.beginTransaction(); + aDAO = getDAO(tx, A12A.class); + } + + @Test(expected = TopiaException.class) + public void createwithNull() throws TopiaException { + + long nbA = aDAO.count(); + + Assert.assertEquals(0, nbA); + + // a with all fields to null + A12A a = aDAO.create(); + tx.commitTransaction(); + } + + @Test + public void create() throws TopiaException { + + long nbA = aDAO.count(); + + Assert.assertEquals(0, nbA); + + // a with all fields to null + A12A a = aDAO.create( + A12A.PROPERTY_STRING_FIELD, "string", + A12A.PROPERTY_INTEGER_FIELD, 1, + A12A.PROPERTY_DATE_FIELD, new Date() + ); + + tx.commitTransaction(); + + nbA = aDAO.count(); + Assert.assertEquals(1, nbA); + + A12A aBis = aDAO.findByTopiaId(a.getTopiaId()); + Assert.assertEquals(a, aBis); + + } +} \ No newline at end of file