protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, AbstractRecord parentRow) { XMLDescriptor referenceDescriptor = (XMLDescriptor) session.getDescriptor(attributeValue.getClass()); if ((referenceDescriptor != null) && (referenceDescriptor.getDefaultRootElement() != null)) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); return objectBuilder.buildRow(attributeValue, session, referenceDescriptor.buildField(referenceDescriptor.getDefaultRootElement()), (XMLRecord) parentRow); } return null; }
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, AbstractRecord parentRow) { XMLDescriptor referenceDescriptor = (XMLDescriptor) session.getDescriptor(attributeValue.getClass()); if ((referenceDescriptor != null) && (referenceDescriptor.getDefaultRootElement() != null)) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); return objectBuilder.buildRow(attributeValue, session, referenceDescriptor.buildField(referenceDescriptor.getDefaultRootElement()), (XMLRecord) parentRow); } return null; }
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, AbstractRecord parentRow) { XMLDescriptor referenceDescriptor = (XMLDescriptor) session.getDescriptor(attributeValue.getClass()); if ((referenceDescriptor != null) && (referenceDescriptor.getDefaultRootElement() != null)) { XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); return objectBuilder.buildRow(attributeValue, session, referenceDescriptor.buildField(referenceDescriptor.getDefaultRootElement()), (XMLRecord) parentRow); } return null; }
/** * INTERNAL: * The mapping is initialized with the given session. This mapping is fully initialized * after this. */ public void initialize(AbstractSession session) throws DescriptorException { super.initialize(session); if(null != getField()) { setField(getDescriptor().buildField(getField())); } ContainerPolicy cp = getContainerPolicy(); if (cp != null) { if (cp.getContainerClass() == null) { Class cls = session.getDatasourcePlatform().getConversionManager().convertClassNameToClass(cp.getContainerClassName()); cp.setContainerClass(cls); } } // iterate over each source & target XMLField and set the // appropriate namespace resolver XMLDescriptor descriptor = (XMLDescriptor) this.getDescriptor(); XMLDescriptor targetDescriptor = (XMLDescriptor) getReferenceDescriptor(); for (int index = 0; index < sourceToTargetKeys.size(); index++) { XMLField sourceField = (XMLField) sourceToTargetKeys.get(index); XMLField targetField = (XMLField) sourceToTargetKeyFieldAssociations.remove(sourceField); sourceField = (XMLField) descriptor.buildField(sourceField); sourceToTargetKeys.set(index, sourceField); targetField = (XMLField) targetDescriptor.buildField(targetField); sourceToTargetKeyFieldAssociations.put(sourceField, targetField); } }
XMLField sourceField = (XMLField) sourceToTargetKeys.get(index); XMLField targetField = (XMLField) sourceToTargetKeyFieldAssociations.remove(sourceField); sourceField = (XMLField) descriptor.buildField(sourceField); sourceToTargetKeys.set(index, sourceField); if(null != targetField) { XMLField nextPKField = (XMLField)pkFields.get(i); if(targetField.equals(nextPKField)){ targetField = (XMLField) targetDescriptor.buildField(nextPKField); sourceField.setSchemaType(targetField.getSchemaType()); break;
XMLField sourceField = (XMLField) sourceToTargetKeys.get(index); XMLField targetField = (XMLField) sourceToTargetKeyFieldAssociations.remove(sourceField); sourceField = (XMLField) descriptor.buildField(sourceField); sourceToTargetKeys.set(index, sourceField); if(null != targetField) { XMLField nextPKField = (XMLField)pkFields.get(i); if(targetField.equals(nextPKField)){ targetField = (XMLField) targetDescriptor.buildField(nextPKField); sourceField.setSchemaType(targetField.getSchemaType()); break;
XMLField sourceField = (XMLField) sourceToTargetKeys.get(index); XMLField targetField = (XMLField) sourceToTargetKeyFieldAssociations.remove(sourceField); sourceField = (XMLField) descriptor.buildField(sourceField); sourceToTargetKeys.set(index, sourceField); targetField = (XMLField) targetDescriptor.buildField(targetField); sourceToTargetKeyFieldAssociations.put(sourceField, targetField);
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, XMLDescriptor referenceDescriptor, AbstractRecord parentRow, DatabaseField field, Object originalObject, boolean wasXMLRoot) { String defaultRootElementString = null; if(referenceDescriptor != null){ defaultRootElementString = referenceDescriptor.getDefaultRootElement(); if (!wasXMLRoot && defaultRootElementString == null) { throw XMLMarshalException.defaultRootElementNotSpecified((XMLDescriptor) descriptor); } } if ((field == null) && (referenceDescriptor != null) && (defaultRootElementString != null)) { field = referenceDescriptor.buildField(defaultRootElementString); } if ((field != null) && (referenceDescriptor != null)) { ((XMLRecord) parentRow).setLeafElementType(referenceDescriptor.getDefaultRootElementType()); XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); XMLRecord child = (XMLRecord) objectBuilder.createRecordFor(attributeValue, (XMLField) field, (XMLRecord) parentRow, this); child.setNamespaceResolver(((XMLRecord) parentRow).getNamespaceResolver()); objectBuilder.buildIntoNestedRow(child, originalObject, attributeValue, session, referenceDescriptor, (XMLField) field, wasXMLRoot); return child; } return null; }
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, XMLDescriptor referenceDescriptor, AbstractRecord parentRow, DatabaseField field, Object originalObject, boolean wasXMLRoot) { String defaultRootElementString = null; if(referenceDescriptor != null){ defaultRootElementString = referenceDescriptor.getDefaultRootElement(); if (!wasXMLRoot && defaultRootElementString == null) { throw XMLMarshalException.defaultRootElementNotSpecified((XMLDescriptor) descriptor); } } if ((field == null) && (referenceDescriptor != null) && (defaultRootElementString != null)) { field = referenceDescriptor.buildField(defaultRootElementString); } if ((field != null) && (referenceDescriptor != null)) { ((XMLRecord) parentRow).setLeafElementType(referenceDescriptor.getDefaultRootElementType()); XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); XMLRecord child = (XMLRecord) objectBuilder.createRecordFor(attributeValue, (XMLField) field, (XMLRecord) parentRow, this); child.setNamespaceResolver(((XMLRecord) parentRow).getNamespaceResolver()); objectBuilder.buildIntoNestedRow(child, originalObject, attributeValue, session, referenceDescriptor, (XMLField) field, wasXMLRoot); return child; } return null; }
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, XMLDescriptor referenceDescriptor, AbstractRecord parentRow, DatabaseField field, Object originalObject, boolean wasXMLRoot) { String defaultRootElementString = null; if(referenceDescriptor != null){ defaultRootElementString = referenceDescriptor.getDefaultRootElement(); if (!wasXMLRoot && defaultRootElementString == null) { throw XMLMarshalException.defaultRootElementNotSpecified((XMLDescriptor) descriptor); } } if ((field == null) && (referenceDescriptor != null) && (defaultRootElementString != null)) { field = referenceDescriptor.buildField(defaultRootElementString); } if ((field != null) && (referenceDescriptor != null)) { ((XMLRecord) parentRow).setLeafElementType(referenceDescriptor.getDefaultRootElementType()); XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); XMLRecord child = (XMLRecord) objectBuilder.createRecordFor(attributeValue, (XMLField) field, (XMLRecord) parentRow, this); child.setNamespaceResolver(((XMLRecord) parentRow).getNamespaceResolver()); objectBuilder.buildIntoNestedRow(child, originalObject, attributeValue, session, referenceDescriptor, (XMLField) field, wasXMLRoot); return child; } return null; }
private void writeXsiTypeAttribute(XMLDescriptor xmlDescriptor, DOMRecord row, String typeValue) { String xsiPrefix = null; boolean generated = false; xsiPrefix = row.getNamespaceResolver().resolveNamespaceURI(XMLConstants.SCHEMA_INSTANCE_URL); if (xsiPrefix == null) { xsiPrefix = xmlDescriptor.getNonNullNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_INSTANCE_PREFIX); generated = true; writeXsiNamespace(row, xsiPrefix); } XMLField xmlField = (XMLField)xmlDescriptor.buildField(XMLConstants.ATTRIBUTE + xsiPrefix + XMLConstants.COLON + XMLConstants.SCHEMA_TYPE_ATTRIBUTE); if (generated) { xmlField.getLastXPathFragment().setGeneratedPrefix(true); } xmlField.getLastXPathFragment().setNamespaceURI(XMLConstants.SCHEMA_INSTANCE_URL); row.add(xmlField, typeValue); }
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, XMLDescriptor referenceDescriptor, AbstractRecord parentRow, DatabaseField field, Object originalObject, boolean wasXMLRoot) { String defaultRootElementString = null; if(referenceDescriptor != null){ defaultRootElementString = referenceDescriptor.getDefaultRootElement(); if (!wasXMLRoot && defaultRootElementString == null) { throw XMLMarshalException.defaultRootElementNotSpecified((XMLDescriptor) descriptor); } } if ((field == null) && (referenceDescriptor != null) && (defaultRootElementString != null)) { field = referenceDescriptor.buildField(defaultRootElementString); } if ((field != null) && (referenceDescriptor != null)) { ((XMLRecord) parentRow).setLeafElementType(referenceDescriptor.getDefaultRootElementType()); XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); XMLRecord child = (XMLRecord) objectBuilder.createRecordFor(attributeValue, (XMLField) field, (XMLRecord) parentRow, this); child.setNamespaceResolver(((XMLRecord) parentRow).getNamespaceResolver()); objectBuilder.buildIntoNestedRow(child, originalObject, attributeValue, session, referenceDescriptor, (XMLField) field, wasXMLRoot); return child; } return null; }
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, XMLDescriptor referenceDescriptor, AbstractRecord parentRow, DatabaseField field, Object originalObject, boolean wasXMLRoot) { if ((field == null) && (referenceDescriptor != null) && (referenceDescriptor.getDefaultRootElement() != null)) { field = referenceDescriptor.buildField(referenceDescriptor.getDefaultRootElement()); } if ((field != null) && (referenceDescriptor != null)) { ((XMLRecord) parentRow).setLeafElementType(referenceDescriptor.getDefaultRootElementType()); XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); boolean addXsiType = shouldAddXsiType(((XMLRecord) parentRow).getMarshaller(), referenceDescriptor, originalObject, wasXMLRoot); XMLRecord child = (XMLRecord) objectBuilder.createRecordFor(attributeValue, (XMLField) field, (XMLRecord) parentRow, this); child.setNamespaceResolver(((XMLRecord) parentRow).getNamespaceResolver()); objectBuilder.buildIntoNestedRow(child, attributeValue, session, addXsiType); return child; } return null; }
protected AbstractRecord buildCompositeRow(Object attributeValue, AbstractSession session, XMLDescriptor referenceDescriptor, AbstractRecord parentRow, DatabaseField field, Object originalObject, boolean wasXMLRoot) { if ((field == null) && (referenceDescriptor != null) && (referenceDescriptor.getDefaultRootElement() != null)) { field = referenceDescriptor.buildField(referenceDescriptor.getDefaultRootElement()); } if ((field != null) && (referenceDescriptor != null)) { ((XMLRecord) parentRow).setLeafElementType(referenceDescriptor.getDefaultRootElementType()); XMLObjectBuilder objectBuilder = (XMLObjectBuilder) referenceDescriptor.getObjectBuilder(); boolean addXsiType = shouldAddXsiType(((XMLRecord) parentRow).getMarshaller(), referenceDescriptor, originalObject, wasXMLRoot); XMLRecord child = (XMLRecord) objectBuilder.createRecordFor(attributeValue, (XMLField) field, (XMLRecord) parentRow, this); child.setNamespaceResolver(((XMLRecord) parentRow).getNamespaceResolver()); objectBuilder.buildIntoNestedRow(child, attributeValue, session, addXsiType); return child; } return null; }
/** * INTERNAL: * Convenience method that sets up class indicator and @sdoRef * attribute. * * @param xdesc * @param pCls */ private void addClassIndicator(XMLDescriptor xdesc, Class pCls, boolean isInheritanceRoot) { XMLField field = (XMLField)getXmlDescriptor().buildField("@xsi:type"); field.initialize(); xdesc.getInheritancePolicy().setClassIndicatorField(field); String parentIndicator = getName(); String parentPrefix = xdesc.getNamespaceResolver().resolveNamespaceURI(getURI()); if (parentPrefix != null) { parentIndicator = parentPrefix + SDOConstants.SDO_XPATH_NS_SEPARATOR_FRAGMENT + parentIndicator; } xdesc.getInheritancePolicy().addClassIndicator(pCls, parentIndicator); // only add the @sdoRef attribute if necessary if (xdesc.getMappingForAttributeName(SDO_REF_MAPPING_ATTRIBUTE_NAME) == null) { String sdoPrefix = ((SDOTypeHelper)aHelperContext.getTypeHelper()).getPrefix(SDOConstants.SDO_URL); XMLDirectMapping sdoRefMapping = new XMLDirectMapping(); sdoRefMapping.setAttributeName(SDO_REF_MAPPING_ATTRIBUTE_NAME); XMLField xmlField = new XMLField("@" + sdoPrefix + SDOConstants.SDO_XPATH_NS_SEPARATOR_FRAGMENT + SDOConstants.CHANGESUMMARY_REF); xmlField.getXPathFragment().setNamespaceURI(SDOConstants.SDO_URL); xmlField.getLastXPathFragment().setNamespaceURI(SDOConstants.SDO_URL); sdoRefMapping.setField(xmlField); xdesc.addMapping(sdoRefMapping); } }
XMLField field = (XMLField)getXmlDescriptor().buildField("@xsi:type"); field.initialize(); xdesc.getInheritancePolicy().setClassIndicatorField(field);