/** * INTERNAL: * Initialize the mapping. */ @Override public void postInitialize(AbstractSession session) throws DescriptorException { super.postInitialize(session); if (getReferenceDescriptor() != null) { getReferenceDescriptor().getCachePolicy().setCacheIsolation(this.descriptor.getCachePolicy().getCacheIsolation()); // Changed as part of fix for bug#4410581 aggregate mapping can not be set to use change tracking if owning descriptor does not use it. // Basically the policies should be the same, but we also allow deferred with attribute for CMP2 (courser grained). if (getDescriptor().getObjectChangePolicy().getClass().equals(DeferredChangeDetectionPolicy.class)) { getReferenceDescriptor().setObjectChangePolicy(new DeferredChangeDetectionPolicy()); } else if (getDescriptor().getObjectChangePolicy().getClass().equals(ObjectChangeTrackingPolicy.class) && getReferenceDescriptor().getObjectChangePolicy().getClass().equals(AttributeChangeTrackingPolicy.class)) { getReferenceDescriptor().setObjectChangePolicy(new ObjectChangeTrackingPolicy()); } } }
/** * INTERNAL: * Initialize the mapping. */ @Override public void postInitialize(AbstractSession session) throws DescriptorException { super.postInitialize(session); if (getReferenceDescriptor() != null) { getReferenceDescriptor().getCachePolicy().setCacheIsolation(this.descriptor.getCachePolicy().getCacheIsolation()); // Changed as part of fix for bug#4410581 aggregate mapping can not be set to use change tracking if owning descriptor does not use it. // Basically the policies should be the same, but we also allow deferred with attribute for CMP2 (courser grained). if (getDescriptor().getObjectChangePolicy().getClass().equals(DeferredChangeDetectionPolicy.class)) { getReferenceDescriptor().setObjectChangePolicy(new DeferredChangeDetectionPolicy()); } else if (getDescriptor().getObjectChangePolicy().getClass().equals(ObjectChangeTrackingPolicy.class) && getReferenceDescriptor().getObjectChangePolicy().getClass().equals(AttributeChangeTrackingPolicy.class)) { getReferenceDescriptor().setObjectChangePolicy(new ObjectChangeTrackingPolicy()); } } }
@Override protected Object buildCompositeRow(Object attributeValue, AbstractSession session, AbstractRecord record, WriteType writeType) { if (((EISDescriptor)getDescriptor()).isXMLFormat()) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder)getReferenceDescriptor(attributeValue, session).getObjectBuilder(); return objectBuilder.buildRow(attributeValue, session, getField(), (XMLRecord)record); } else { AbstractRecord nestedRow = this.getObjectBuilder(attributeValue, session).buildRow(attributeValue, session, writeType); return this.getReferenceDescriptor(attributeValue, session).buildFieldValueFromNestedRow(nestedRow, session); } }
@Override protected Object buildCompositeRow(Object attributeValue, AbstractSession session, AbstractRecord record, WriteType writeType) { if (((EISDescriptor)getDescriptor()).isXMLFormat()) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder)getReferenceDescriptor(attributeValue, session).getObjectBuilder(); return objectBuilder.buildRow(attributeValue, session, getField(), (XMLRecord)record); } else { AbstractRecord nestedRow = this.getObjectBuilder(attributeValue, session).buildRow(attributeValue, session, writeType); return this.getReferenceDescriptor(attributeValue, session).buildFieldValueFromNestedRow(nestedRow, session); } }
protected Object buildCompositeRow(Object attributeValue, AbstractSession session, AbstractRecord record) { if (((EISDescriptor)getDescriptor()).getDataFormat() == EISDescriptor.XML) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder)getReferenceDescriptor(attributeValue, session).getObjectBuilder(); return objectBuilder.buildRow(attributeValue, session, getField(), (XMLRecord)record); } else { AbstractRecord nestedRow = this.getObjectBuilder(attributeValue, session).buildRow(attributeValue, session); return this.getReferenceDescriptor(attributeValue, session).buildFieldValueFromNestedRow(nestedRow, session); } }
/** * INTERNAL: * Build the value for the database field and put it in the * specified database row. */ @Override public void writeFromObjectIntoRow(Object object, AbstractRecord record, AbstractSession session, WriteType writeType) throws DescriptorException { if (this.isReadOnly()) { return; } Object attributeValue = this.getAttributeValueFromObject(object); // handle "." xpath - condition: xml data format AND xml field is "self" if ((((EISDescriptor)getDescriptor()).isXMLFormat()) && ((XMLField)getField()).isSelfField()) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder)getReferenceDescriptor(attributeValue, session).getObjectBuilder(); objectBuilder.buildIntoNestedRow(record, attributeValue, session); } else { Object fieldValue = null; if (attributeValue != null) { fieldValue = buildCompositeRow(attributeValue, session, record, writeType); } record.put(this.getField(), fieldValue); } }
/** * INTERNAL: * Build the value for the database field and put it in the * specified database row. */ public void writeFromObjectIntoRow(Object object, AbstractRecord record, AbstractSession session) throws DescriptorException { if (this.isReadOnly()) { return; } Object attributeValue = this.getAttributeValueFromObject(object); // handle "." xpath - condition: xml data format AND xml field is "self" if ((((EISDescriptor)getDescriptor()).getDataFormat() == EISDescriptor.XML) && ((XMLField)getField()).isSelfField()) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder)getReferenceDescriptor(attributeValue, session).getObjectBuilder(); objectBuilder.buildIntoNestedRow(record, attributeValue, session); } else { Object fieldValue = null; if (attributeValue != null) { fieldValue = buildCompositeRow(attributeValue, session, record); } record.put(this.getField(), fieldValue); } } }
/** * INTERNAL: * Build the value for the database field and put it in the * specified database row. */ @Override public void writeFromObjectIntoRow(Object object, AbstractRecord record, AbstractSession session, WriteType writeType) throws DescriptorException { if (this.isReadOnly()) { return; } Object attributeValue = this.getAttributeValueFromObject(object); // handle "." xpath - condition: xml data format AND xml field is "self" if ((((EISDescriptor)getDescriptor()).isXMLFormat()) && ((XMLField)getField()).isSelfField()) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder)getReferenceDescriptor(attributeValue, session).getObjectBuilder(); objectBuilder.buildIntoNestedRow(record, attributeValue, session); } else { Object fieldValue = null; if (attributeValue != null) { fieldValue = buildCompositeRow(attributeValue, session, record, writeType); } record.put(this.getField(), fieldValue); } }