Hi!

I'm having some problems related to refaulting objects due to optimistic locking failures.

I have this situation where I update two objects, and some fields of those objects are "optimistic locking enabled". I know that if I get a failure, when saving, related to one object, the other will probably generate a new exception as well, so I refault both.

  Basically, I have this:

        int tries = 0;

        SomeClass object1;
        OtherClass object2;

        while( tries < MAX_TRIES ) {
            updateObject1( object1 );
            updateObject2( object2 );

            try {
                Util.sleep(5); // Testing this thing
                editingContext.saveChanges();
                return true;
            } catch (EOGeneralAdaptorException saveException) {
                NSLog.out.appendln("Optimistic locking failure");
                ++tries;
                if( Util.isOptimisticLockingFailure(saveException) ) {
EOEnterpriseObject object = Util.handleOptimisticLockingFailureByRefaulting( saveException, respondent.editingContext() );
                    if( object == object1 || object == object2) {
                        editingContext.refaultObject( object1 );
                        editingContext.refaultObject( object2 );
                    } else {
throw new RuntimeException("An unexpected object caused an optimistic locking failure.");
                    }
                } else {
                    throw saveException;
                }
            }
        }

        return false;

The problem is that only object1 is refaulted! I was consulting the PSQL log, and there is a SELECT statement to get object1 back from the DB, but nothing happens related to object2. And naturally, when I try to save again, I will get a new exception, over and over, because object2 is not being refaulted.

I don't know it that helps, but object1 has a to-one relationship to object2.

Any idea of what might be causing this? What does EXACTLY refaultObject do?

  Yours

Miguel Arroz

Miguel Arroz
http://www.terminalapp.net
http://www.ipragma.com



_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to