protected void addOptimisticLockingLines(NonreflectiveMethodDefinition method, OptimisticLockingPolicy policy) { String policyClassName = policy.getClass().getName(); String packageName = policyClassName.substring(0, policyClassName.lastIndexOf('.')); if (packageName.equals("org.eclipse.persistence.descriptors")) { policyClassName = Helper.getShortClassName(policy); } method.addLine(policyClassName + " lockingPolicy = new " + policyClassName + "();"); if (policy instanceof SelectedFieldsLockingPolicy) { SelectedFieldsLockingPolicy fieldPolicy = (SelectedFieldsLockingPolicy)policy; for (Enumeration fieldsEnum = fieldPolicy.getLockFields().elements(); fieldsEnum.hasMoreElements();) { DatabaseField field = (DatabaseField)fieldsEnum.nextElement(); method.addLine("lockingPolicy.addLockFieldName(\"" + field.getQualifiedName() + "\");"); } } else if (policy instanceof VersionLockingPolicy) { VersionLockingPolicy versionPolicy = (VersionLockingPolicy)policy; method.addLine("lockingPolicy.setWriteLockFieldName(\"" + versionPolicy.getWriteLockField().getQualifiedName() + "\");"); if (versionPolicy.isStoredInObject()) { method.addLine("lockingPolicy.storeInObject();"); } if (policy instanceof TimestampLockingPolicy) { TimestampLockingPolicy timestampPolicy = (TimestampLockingPolicy)policy; if (timestampPolicy.usesLocalTime()) { method.addLine("lockingPolicy.useLocalTime();"); } } } method.addLine("descriptor.setOptimisticLockingPolicy(lockingPolicy);"); }
protected void addOptimisticLockingLines(NonreflectiveMethodDefinition method, OptimisticLockingPolicy policy) { String policyClassName = policy.getClass().getName(); String packageName = policyClassName.substring(0, policyClassName.lastIndexOf('.')); if (packageName.equals("org.eclipse.persistence.descriptors")) { policyClassName = Helper.getShortClassName(policy); } method.addLine(policyClassName + " lockingPolicy = new " + policyClassName + "();"); if (policy instanceof SelectedFieldsLockingPolicy) { SelectedFieldsLockingPolicy fieldPolicy = (SelectedFieldsLockingPolicy)policy; for ( DatabaseField field : fieldPolicy.getLockFields()) { method.addLine("lockingPolicy.addLockFieldName(\"" + field.getQualifiedName() + "\");"); } } else if (policy instanceof VersionLockingPolicy) { VersionLockingPolicy versionPolicy = (VersionLockingPolicy)policy; method.addLine("lockingPolicy.setWriteLockFieldName(\"" + versionPolicy.getWriteLockField().getQualifiedName() + "\");"); if (versionPolicy.isStoredInObject()) { method.addLine("lockingPolicy.storeInObject();"); } if (policy instanceof TimestampLockingPolicy) { TimestampLockingPolicy timestampPolicy = (TimestampLockingPolicy)policy; if (timestampPolicy.usesLocalTime()) { method.addLine("lockingPolicy.useLocalTime();"); } } } method.addLine("descriptor.setOptimisticLockingPolicy(lockingPolicy);"); }
protected void addOptimisticLockingLines(NonreflectiveMethodDefinition method, OptimisticLockingPolicy policy) { String policyClassName = policy.getClass().getName(); String packageName = policyClassName.substring(0, policyClassName.lastIndexOf('.')); if (packageName.equals("org.eclipse.persistence.descriptors")) { policyClassName = Helper.getShortClassName(policy); } method.addLine(policyClassName + " lockingPolicy = new " + policyClassName + "();"); if (policy instanceof SelectedFieldsLockingPolicy) { SelectedFieldsLockingPolicy fieldPolicy = (SelectedFieldsLockingPolicy)policy; for ( DatabaseField field : fieldPolicy.getLockFields()) { method.addLine("lockingPolicy.addLockFieldName(\"" + field.getQualifiedName() + "\");"); } } else if (policy instanceof VersionLockingPolicy) { VersionLockingPolicy versionPolicy = (VersionLockingPolicy)policy; method.addLine("lockingPolicy.setWriteLockFieldName(\"" + versionPolicy.getWriteLockField().getQualifiedName() + "\");"); if (versionPolicy.isStoredInObject()) { method.addLine("lockingPolicy.storeInObject();"); } if (policy instanceof TimestampLockingPolicy) { TimestampLockingPolicy timestampPolicy = (TimestampLockingPolicy)policy; if (timestampPolicy.usesLocalTime()) { method.addLine("lockingPolicy.useLocalTime();"); } } } method.addLine("descriptor.setOptimisticLockingPolicy(lockingPolicy);"); }
if (policy.isStoredInObject()) { Object currentValue = builder.extractValueFromObjectForField(registeredObject, policy.getWriteLockField(), session);
/** * INTERNAL: * It is responsible for initializing the policy; */ public void initialize(AbstractSession session) { DatabaseMapping mapping = this.descriptor.getObjectBuilder().getMappingForField(getWriteLockField()); if (mapping == null) { if (isStoredInObject()) { if (this.descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()) != null) { mapping = this.descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()).get(0); session.getIntegrityChecker().handleError(DescriptorException.mappingCanNotBeReadOnly(mapping)); } else { session.getIntegrityChecker().handleError(OptimisticLockException.mustHaveMappingWhenStoredInObject(this.descriptor.getJavaClass())); } } else { return; } } if (isStoredInCache()) { session.getIntegrityChecker().handleError(DescriptorException.mustBeReadOnlyMappingWhenStoredInCache(mapping)); } // PERF: Cache the mapping if direct. if (mapping.isDirectToFieldMapping() && (this.descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()) == null)) { this.lockMapping = (AbstractDirectMapping)mapping; } // If the version field is not in the primary table, then they cannot be batched together. if ((this.descriptor.getTables().size() > 0) && !getWriteLockField().getTable().equals(this.descriptor.getTables().get(0))) { this.descriptor.setHasMultipleTableConstraintDependecy(true); } }
/** * INTERNAL: * It is responsible for initializing the policy; */ public void initialize(AbstractSession session) { DatabaseMapping mapping = this.descriptor.getObjectBuilder().getMappingForField(getWriteLockField()); if (mapping == null) { if (isStoredInObject()) { if (this.descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()) != null) { mapping = this.descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()).get(0); session.getIntegrityChecker().handleError(DescriptorException.mappingCanNotBeReadOnly(mapping)); } else { session.getIntegrityChecker().handleError(OptimisticLockException.mustHaveMappingWhenStoredInObject(this.descriptor.getJavaClass())); } } else { return; } } if (isStoredInCache()) { session.getIntegrityChecker().handleError(DescriptorException.mustBeReadOnlyMappingWhenStoredInCache(mapping)); } // PERF: Cache the mapping if direct. if (mapping.isDirectToFieldMapping() && (this.descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()) == null)) { this.lockMapping = (AbstractDirectMapping)mapping; } // If the version field is not in the primary table, then they cannot be batched together. if ((this.descriptor.getTables().size() > 0) && !getWriteLockField().getTable().equals(this.descriptor.getTables().get(0))) { this.descriptor.setHasMultipleTableConstraintDependecy(true); } }
if (policy.isStoredInObject()) { Object currentValue = builder.extractValueFromObjectForField(registeredObject, policy.getWriteLockField(), session);
if (policy.isStoredInObject()) { Object currentValue = builder.extractValueFromObjectForField(registeredObject, policy.getWriteLockField(), session);
/** * INTERNAL: * It is responsible for initializing the policy; */ public void initialize(AbstractSession session) { DatabaseMapping mapping = descriptor.getObjectBuilder().getMappingForField(getWriteLockField()); if (mapping == null) { if (isStoredInObject()) { if (descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()) != null) { mapping = descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()).get(0); session.getIntegrityChecker().handleError(DescriptorException.mappingCanNotBeReadOnly(mapping)); } else { session.getIntegrityChecker().handleError(OptimisticLockException.mustHaveMappingWhenStoredInObject(descriptor.getJavaClass())); } } else { return; } } if (isStoredInCache()) { session.getIntegrityChecker().handleError(DescriptorException.mustBeReadOnlyMappingWhenStoredInCache(mapping)); } // PERF: Cache the mapping if direct. if (mapping.isDirectToFieldMapping() && (descriptor.getObjectBuilder().getReadOnlyMappingsForField(getWriteLockField()) == null)) { this.lockMapping = (AbstractDirectMapping)mapping; } }