public void addObjectToCache(Object obj, Node node, XMLMapping selfRecordMapping) { // Can't process non-element nodes if (node.getNodeType() != Node.ELEMENT_NODE) { return; } AbstractSession session = context.getSession(obj); XMLDescriptor xmlDescriptor = (XMLDescriptor)session.getDescriptor(obj); DOMRecord row = new DOMRecord((Element)node); row.setSession(session); Vector pk = xmlDescriptor.getObjectBuilder().extractPrimaryKeyFromRow(row, session); if (xmlDescriptor.shouldPreserveDocument() || xmlDescriptor.getPrimaryKeyFieldNames().size() > 0) { if ((pk == null) || (pk.size() == 0)) { pk = new Vector(); pk.addElement(new WeakObjectWrapper(obj)); } CacheKey key = session.getIdentityMapAccessorInstance().acquireDeferredLock(pk, xmlDescriptor.getJavaClass(), xmlDescriptor); if ((xmlDescriptor).shouldPreserveDocument()) { key.setRecord(row); } key.setObject(obj); key.releaseDeferredLock(); } }
/** * Build and return a database row that contains a foreign key for the specified reference * object. This will be stored in the nested row(s). */ protected AbstractRecord extractKeyRowFromReferenceObject(Object object, AbstractSession session, AbstractRecord parentRecord) { int size = this.sourceForeignKeyFields.size(); AbstractRecord result; if (((EISDescriptor) this.getDescriptor()).isXMLFormat()) { Element newNode = XPathEngine.getInstance().createUnownedElement(((XMLRecord)parentRecord).getDOM(), (XMLField)getForeignKeyGroupingElement()); result = new DOMRecord(newNode); ((DOMRecord)result).setSession(session); } else { result = this.descriptor.getObjectBuilder().createRecord(size, session); } for (int index = 0; index < size; index++) { DatabaseField fkField = this.sourceForeignKeyFields.get(index); if (object == null) { result.add(fkField, null); } else { DatabaseField pkField = this.sourceForeignKeysToTargetKeys.get(fkField); Object value = this.referenceDescriptor.getObjectBuilder().extractValueFromObjectForField(object, pkField, session); result.add(fkField, value); } } return result; }
/** * Build and return a database row that contains a foreign key for the specified reference * object. This will be stored in the nested row(s). */ protected AbstractRecord extractKeyRowFromReferenceObject(Object object, AbstractSession session, AbstractRecord parentRecord) { int size = this.sourceForeignKeyFields.size(); AbstractRecord result; if (((EISDescriptor) this.getDescriptor()).isXMLFormat()) { Element newNode = XPathEngine.getInstance().createUnownedElement(((XMLRecord)parentRecord).getDOM(), (XMLField)getForeignKeyGroupingElement()); result = new DOMRecord(newNode); ((DOMRecord)result).setSession(session); } else { result = this.descriptor.getObjectBuilder().createRecord(size, session); } for (int index = 0; index < size; index++) { DatabaseField fkField = this.sourceForeignKeyFields.get(index); if (object == null) { result.add(fkField, null); } else { DatabaseField pkField = this.sourceForeignKeysToTargetKeys.get(fkField); Object value = this.referenceDescriptor.getObjectBuilder().extractValueFromObjectForField(object, pkField, session); result.add(fkField, value); } } return result; }
row.setSession((AbstractSession) session);
row.setSession((AbstractSession) session); marshalNilAttribute(prop, row); return;
row.setSession((AbstractSession) session);
row.setSession((AbstractSession) session); marshalNilAttribute(prop, row); return;
root = XPathEngine.getInstance().create((XMLField) getField(), record.getDOM(), session); DOMRecord rootRecord = new DOMRecord(root); rootRecord.setSession(session); rootRecord.setDocPresPolicy(record.getDocPresPolicy()); rootRecord.setNamespaceResolver(record.getNamespaceResolver());
root = XPathEngine.getInstance().create((XMLField) getField(), record.getDOM(), session); DOMRecord rootRecord = new DOMRecord(root); rootRecord.setSession(session); rootRecord.setDocPresPolicy(record.getDocPresPolicy()); rootRecord.setNamespaceResolver(record.getNamespaceResolver());
root = XPathEngine.getInstance().create((XMLField) getField(), record.getDOM(), session); DOMRecord rootRecord = new DOMRecord(root); rootRecord.setSession(session); rootRecord.setDocPresPolicy(record.getDocPresPolicy()); rootRecord.setNamespaceResolver(record.getNamespaceResolver());
} else { DOMRecord include = new DOMRecord(field.getLastXPathFragment().getLocalName()); include.setSession(session); include.put(includeField, c_id); element = include;
} else { DOMRecord include = new DOMRecord(field.getLastXPathFragment().getLocalName()); include.setSession(session); include.put(includeField, c_id); element = include;
} else { DOMRecord include = new DOMRecord(field.getLastXPathFragment().getLocalName()); include.setSession(session); include.put(includeField, c_id); element = include;