Nick,

can you make your statement 'but I have a section of code later on ' a bit more 
explicit. Iow, when exactly are you calling Database.rollback() ? Could I 
see the complete code ? I'd just like to make sure you get the exception handling 
right before starting to dig deeper ...

Looking at your sample code below - if I may comment - I am getting the feeling that 
in your testing drive you are asking a little too much .. ;-). Updating 
an object that has been read during a separate transaction and creating a user object 
with the same identity .. why bother testing this ? Iow, what is it 
that you are trying to test ?

Werner

On Fri, 12 Mar 2004 13:19:46 -0500, Nick Stuart wrote:

>
>I'm having a weird (at least to me) issue when trying to do a rollback.
>Basically during my tests I'm trying to insert a duplicate key, I catch and throw 
>that error just fine, but I have a section of code later on that looks like:
>               try{
>                if(db.isActive())
>                    db.rollback();                    
>            }catch(TransactionNotInProgressException tnpe){
>                logger.debug("Transaction Error:", tnpe);
>            }
>And when it gets to the db.rollback part I always get an the following error thrown:
>java.lang.NullPointerException: Adding null value is not allowed
>        at org.exolab.castor.persist.FieldMolder.addValue(FieldMolder.java:274)
>        at 
> org.exolab.castor.persist.CollectionProxy$ColProxy.add(ClassMolder.java:3150)
>        at org.exolab.castor.persist.ClassMolder.revertObject(ClassMolder.java:2565)
>        at org.exolab.castor.persist.LockEngine.revertObject(LockEngine.java:852)
>        at 
> org.exolab.castor.persist.TransactionContext.rollback(TransactionContext.java:1720)
>        at org.exolab.castor.jdo.engine.DatabaseImpl.rollback(DatabaseImpl.java:554)
>       ....
>
>Is this what is supposed to happen, am I'm not supposed to try and do a rollback if I 
>have a duplicate key error thrown? I can check for that easily 
enough, but I though this was a more standard procedure.
>
>BTW, my commit code and everything is as follows:
>
>       try{
>            db.begin();            
>            db.update(user.getDepartment());
>            db.create(user);
>            db.commit();
>        }catch (DuplicateIdentityException de){
>            logger.error("There is already a user with this username in the 
> database.");
>            throw new CommandException("Employee already exists.", de);
>        }catch(PersistenceException pe){
>            logger.error("There was a problem saving the user." + pe.getMessage());
>            logger.debug("StackTrace:", pe);
>            throw new CommandException(pe);
>        }
>
>Thanks for any assistance!
>-Nick
>
>---
>Outgoing mail is certified Virus Free.
>Checked by AVG anti-virus system (http://www.grisoft.com).
>Version: 6.0.619 / Virus Database: 398 - Release Date: 3/10/2004
> 
>
>----------------------------------------------------------- 
>If you wish to unsubscribe from this mailing, send mail to
>[EMAIL PROTECTED] with a subject of:
>        unsubscribe castor-dev
>

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to