public boolean marshalSingleValue(XPathFragment xPathFragment, MarshalRecord marshalRecord, Object object, Object targetObject, CoreAbstractSession session, NamespaceResolver namespaceResolver, MarshalContext marshalContext) { Object fieldValue = xmlObjectReferenceMapping.buildFieldValue(targetObject, xmlField, session); if (fieldValue == null) { if(null != targetObject) { Field fkField = (Field) xmlObjectReferenceMapping.getSourceToTargetKeyFieldAssociations().get(xmlField); if(null == fkField) { Descriptor targetDescriptor = (Descriptor) session.getDescriptor(targetObject); fieldValue = marshalRecord.getMarshaller().getContext().getValueByXPath(targetObject, ((CoreField) targetDescriptor.getPrimaryKeyFields().get(0)).getName(), targetDescriptor.getNamespaceResolver(), Object.class); } else { fieldValue = marshalRecord.getMarshaller().getContext().getValueByXPath(targetObject, fkField.getXPath(), fkField.getNamespaceResolver(), Object.class); } } if(null == fieldValue) { return false; } } QName schemaType = xmlField.getSchemaTypeForValue(fieldValue, session); XPathFragment groupingFragment = marshalRecord.openStartGroupingElements(namespaceResolver); if (xPathFragment != null && xPathFragment.isAttribute()) { marshalRecord.attribute(xPathFragment, namespaceResolver, fieldValue, schemaType); marshalRecord.closeStartGroupingElements(groupingFragment); } else { marshalRecord.closeStartGroupingElements(groupingFragment); marshalRecord.characters(schemaType, fieldValue, null, false); } return true; }
public boolean marshalSingleValue(XPathFragment xPathFragment, MarshalRecord marshalRecord, Object object, Object targetObject, CoreAbstractSession session, NamespaceResolver namespaceResolver, MarshalContext marshalContext) { Object fieldValue = xmlObjectReferenceMapping.buildFieldValue(targetObject, xmlField, session); if (fieldValue == null) { if(null != targetObject) { Field fkField = (Field) xmlObjectReferenceMapping.getSourceToTargetKeyFieldAssociations().get(xmlField); if(null == fkField) { Descriptor targetDescriptor = (Descriptor) session.getDescriptor(targetObject); fieldValue = marshalRecord.getMarshaller().getContext().getValueByXPath(targetObject, ((CoreField) targetDescriptor.getPrimaryKeyFields().get(0)).getName(), targetDescriptor.getNamespaceResolver(), Object.class); } else { fieldValue = marshalRecord.getMarshaller().getContext().getValueByXPath(targetObject, fkField.getXPath(), fkField.getNamespaceResolver(), Object.class); } } if(null == fieldValue) { return false; } } QName schemaType = xmlField.getSchemaTypeForValue(fieldValue, session); XPathFragment groupingFragment = marshalRecord.openStartGroupingElements(namespaceResolver); if (xPathFragment.isAttribute()) { marshalRecord.attribute(xPathFragment, namespaceResolver, fieldValue, schemaType); marshalRecord.closeStartGroupingElements(groupingFragment); } else { marshalRecord.closeStartGroupingElements(groupingFragment); marshalRecord.characters(schemaType, fieldValue, null, false); } return true; }