cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: 3.1B1 Validation Exception
Date Wed, 10 Oct 2012 13:29:28 GMT
Yeah, I guess PostAdd is the right callback to init new object defaults. We are rewriting the
docs for 3.1. May need to clarify it there.

(and sorry for the late reply).

On Oct 10, 2012, at 3:17 PM, Ramiro Aparicio <ramiro.aparicio@prot-on.com> wrote:

> Umm we found the same pattern some time ago, and just moved our default values to onPostAdd,
and I that is working fine for us, but I am not sure if we are using it with mandatory fields.
> 
> El 10/10/2012 13:42, dollj@xsinet.co.za escribió:
>> Does anybody have any news on this, please ?
>> Thanks.
>> 
>> ---------------------------- Original Message ----------------------------
>> Subject: Re: 3.1B1 Validation Exception
>> Date:    Thu, September 20, 2012 11:27
>> --------------------------------------------------------------------------
>> 
>> Not sure how to submit the example, but here goes:
>> 
>> 1.  TestMap.map.xml
>> 
>> <?xml version="1.0" encoding="utf-8"?>
>> <data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap"
>> 	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> 	 xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap
>> http://cayenne.apache.org/schema/3.0/modelMap.xsd"
>> 	 project-version="6">
>> 	<property name="defaultPackage" value="test.tables"/>
>> 	<db-entity name="DOCUMENTS">
>> 		<db-attribute name="CLEINT_NO" type="VARCHAR" isMandatory="true"
>> length="50"/>
>> 		<db-attribute name="DOC_DATE" type="TIMESTAMP" isMandatory="true"/>
>> 		<db-attribute name="DOC_ID" type="BIGINT" isPrimaryKey="true"
>> isGenerated="true" isMandatory="true"/>
>> 		<db-attribute name="DOC_INFO" type="CLOB" isMandatory="true"/>
>> 		<db-attribute name="DOC_REF_NO" type="VARCHAR" isMandatory="true"
>> length="50"/>
>> 	</db-entity>
>> 	<obj-entity name="Document" className="test.tables.Document"
>> dbEntityName="DOCUMENTS">
>> 		<obj-attribute name="client_id" type="java.lang.String"
>> db-attribute-path="CLEINT_NO"/>
>> 		<obj-attribute name="docDate" type="java.sql.Timestamp"
>> db-attribute-path="DOC_DATE"/>
>> 		<obj-attribute name="info" type="java.lang.String"
>> db-attribute-path="DOC_INFO"/>
>> 		<obj-attribute name="reference" type="java.lang.String"
>> db-attribute-path="DOC_REF_NO"/>
>> 		<pre-persist method-name="onPrePersist"/>
>> 	</obj-entity>
>> </data-map>
>> 
>> --------------------------------------------------------------------
>> 2.  Document class
>> 
>> package test.tables;
>> import java.sql.Timestamp;
>> import test.tables.auto._Document;
>> 
>> public class Document extends _Document
>> {
>>     @Override
>>     protected void onPrePersist()
>>     {
>>          setDocDate( new Timestamp( System.currentTimeMillis() ) );
>>     }
>> }
>> 
>> --------------------------------------------------------------------
>> 3.  Test class
>> 
>> import org.apache.cayenne.configuration.server.ServerRuntime;
>> import test.tables.Document;
>> 
>> public class Test
>> {
>>     public static void main( String[] args )
>>     {
>>         ServerRuntime server = new ServerRuntime("cayenne-Test.xml");
>>         Document  newDoc = server.getContext().newObject( Document.class );
>> 
>>         newDoc.setClient_id( "12345" );
>>         newDoc.setReference( "Test entry" );
>>         newDoc.setInfo( "Some text about stuff." );
>> 
>>         newDoc.getObjectContext().commitChanges();
>>     }
>> }
>> 
>> --------------------------------------------------------------------
>> 4.  The Exception
>> 
>> Exception in thread "main"
>> org.apache.cayenne.validation.ValidationException: [v.3.1B1 May 28 2012
>> 20:59:56] Validation failures: Validation failure for
>> test.tables.Document.docDate: "docDate"  is required.
>> Validation failure for test.tables.Document.docDate: "docDate"  is required.
>> 	at
>> org.apache.cayenne.access.ObjectStoreGraphDiff.validateAndCheckNoop(ObjectStoreGraphDiff.java:111)
>> 	at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:806)
>> 	at org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:756)
>> 	at Test.main(Test.java:16)
>> 
>> --------------------------------------------------------------------
>> 
>> Thanks.
>> 
>> 
>>> That doesn't sound like the right behavior.  Can you create small example
>>> that reproduces the problem?
>>> 
>>> On Wednesday, September 19, 2012, wrote:
>>> 
>>>> Is this a bug or am I doing something wrong ?
>>>> 
>>>> I'm using 3.1B1 and getting a validation exception BEFORE my
>>>> onPrePersist lifecycle method is called ?
>>>> 
>>>> Caused by: org.apache.cayenne.validation.ValidationException: [v.3.1B1
>>>> May 28 2012
>> 20:59:56]org.apache.cayenne.access.ObjectStoreGraphDiff.validateAndCheckNoop(ObjectStoreGraphDiff.java:111)
>>>>         at
>>>> org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:806)
>>>>         at
>>>> org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:756)
>>>> 
>>>> 
>>>> The Cayenne Guide\Lifecycle Callbacks documentation indicates that
>>>> PrePersist is called "Prior to commit (and prior to "validateFor*")
>>>> within ObjectContext.commitChanges()"
>>>> 
>>>> However from the above this doesn't seem to be the case ?
>>>> 
>>>> So is this a bug or am I missing something ?
>>>> 
>> 
>> 
> 
> 


Mime
View raw message