cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Lamb (dev)" <al...@mac.com>
Subject Re: Raising an exception in a callback
Date Tue, 26 Feb 2008 13:04:32 GMT
I can't seem to get the original exception.

In my Object:

	public void checkBeforeDelete() {
		if(getInvoiced() != null && getInvoiced())
			throw new RuntimeException("*** Invoice created " +  
getFormattedCreationDate() + " is invoiced, can't delete");
	}


Then I catch the error the following way:

		try {
			_session.getDataContext().deleteObject(invoice);
			_session.getDataContext().commitChanges();
		} catch(Exception e) {
			System.out.println("***** CAN'T DELETE INVOICE: " + e.getMessage());
			_session.getDataContext().rollbackChanges();
		}


e.getCause() will give me an InvocationTargetException.

Alex

Le 26 févr. 08 à 10:56, Andrus Adamchik a écrit :

>
> On Feb 26, 2008, at 11:45 AM, Alexander Lamb (dev) wrote:
>
>> Hello List,
>>
>> I want to prevent a delete of an object if certain attributes have  
>> certain values (e.g. do not delete an invoice which has already  
>> been sent).
>>
>> I registered the callback in the Modeler. Works fine.
>>
>> I do my test in the callback function I defined, it works fine.
>>
>> Except that to "stop" the delete, I raise a RuntimeException (I  
>> don't see any other way). It works and is catched by the delete.  
>> However I do not get my exception, but an exception Cayenne has  
>> generated.
>>
>> What is the correct way to raise an exception and transfer up the  
>> correct error message?
>>
>> Thanks,
>>
>> Alex
>
> Without looking at the code, IIRC CayenneRuntimeException.getCause()  
> should store your exception.
>
> Andrus


Mime
View raw message