/** * INTERNAL: * Add the cascade locking policy to all children that have a relationship to this descriptor * either by inheritance or by encapsulation/aggregation. * @param policy - the CascadeLockingPolicy */ public void addCascadeLockingPolicy(CascadeLockingPolicy policy) { cascadeLockingPolicies.add(policy); // 232608: propagate later version changes up to the locking policy on a parent branch by setting the policy on all children here if(this.hasInheritance()) { // InOrder traverse the entire [deep] tree, not just the next level Iterator<ClassDescriptor> anIterator = getInheritancePolicy().getAllChildDescriptors().iterator(); while(anIterator.hasNext()) { // Set the same cascade locking policy on all descriptors that inherit from this descriptor. anIterator.next().addCascadeLockingPolicy(policy); } } // do not propagate an extra locking policy to other mappings, if this descriptor already // has a cascaded optimistic locking policy that will be cascaded if (!(usesOptimisticLocking() && getOptimisticLockingPolicy().isCascaded()) && isInitialized(INITIALIZED)) { // Set cascade locking policies on privately owned children mappings. for (Enumeration mappings = getMappings().elements(); mappings.hasMoreElements();) { prepareCascadeLockingPolicy((DatabaseMapping)mappings.nextElement()); } } }
((CascadeLockingPolicy)policies.nextElement()).lockNotifyParent(object, changeSet, this); } else if (descriptor.usesOptimisticLocking() && descriptor.getOptimisticLockingPolicy().isCascaded()) { changes.setHasForcedChangesFromCascadeLocking(true);
policy.lockNotifyParent(object, changeSet, this); } else if (descriptor.usesOptimisticLocking() && descriptor.getOptimisticLockingPolicy().isCascaded()) { changes.setHasForcedChangesFromCascadeLocking(true);
policy.lockNotifyParent(object, changeSet, this); } else if (descriptor.usesOptimisticLocking() && descriptor.getOptimisticLockingPolicy().isCascaded()) { changes.setHasForcedChangesFromCascadeLocking(true);
if (realParentDescriptor.usesOptimisticLocking() && realParentDescriptor.getOptimisticLockingPolicy().isCascaded()) { ObjectChangeSet ocs = realParentDescriptor.getObjectBuilder().createObjectChangeSet(parentObj, changeSet, uow);
if ((usesOptimisticLocking() && getOptimisticLockingPolicy().isCascaded()) || hasCascadeLockingPolicies()) { prepareCascadeLockingPolicy(mapping);
boolean initializeCascadeLocking = (usesOptimisticLocking() && getOptimisticLockingPolicy().isCascaded()) || hasCascadeLockingPolicies(); for (DatabaseMapping mapping : getMappings()) { validateMappingType(mapping);
boolean initializeCascadeLocking = (usesOptimisticLocking() && getOptimisticLockingPolicy().isCascaded()) || hasCascadeLockingPolicies(); for (DatabaseMapping mapping : getMappings()) { validateMappingType(mapping);
if (realParentDescriptor.usesOptimisticLocking() && realParentDescriptor.getOptimisticLockingPolicy().isCascaded()) { ObjectChangeSet ocs = realParentDescriptor.getObjectBuilder().createObjectChangeSet(parentObj, changeSet, uow);
if (realParentDescriptor.usesOptimisticLocking() && realParentDescriptor.getOptimisticLockingPolicy().isCascaded()) { ObjectChangeSet ocs = realParentDescriptor.getObjectBuilder().createObjectChangeSet(parentObj, changeSet, uow);