protected void addOpenMappings() { XMLAnyCollectionMapping anyMapping = new XMLAnyCollectionMapping(); anyMapping.setAttributeName(ANY_MAPPING_ATTRIBUTE_NAME); anyMapping.setGetMethodName(ANY_MAPPING_GET_METHOD_NAME); anyMapping.setSetMethodName(ANY_MAPPING_SET_METHOD_NAME); anyMapping.setUseXMLRoot(true); getXmlDescriptor().addMapping(anyMapping); XMLAnyAttributeMapping anyAttrMapping = new XMLAnyAttributeMapping(); anyAttrMapping.setAttributeName("openContentPropertiesAttributes"); anyAttrMapping.setGetMethodName("_getOpenContentPropertiesAttributesMap"); anyAttrMapping.setSetMethodName("_setOpenContentPropertiesAttributesMap"); getXmlDescriptor().addMapping(anyAttrMapping); }
public XMLAnyCollectionMapping() { this.containerPolicy = ContainerPolicy.buildDefaultPolicy(); useXMLRoot = false; setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_NONE_AS_ELEMENT); }
ContainerPolicy cp = getContainerPolicy(); Object container = null; if (reuseContainer) { Object currentObject = record.getCurrentObject(); Object value = getAttributeAccessor().getAttributeValueFromObject(currentObject); container = value != null ? value : cp.containerInstance(); } else { if (isUnmappedContent(next)) { if ((next.getNodeType() == Node.TEXT_NODE) && this.isMixedContent()) { if (next.getNodeValue().trim().length() > 0) { objectValue = next.getNodeValue(); objectValue = convertDataValueToObjectValue(objectValue, session, record.getUnmarshaller()); cp.addInto(objectValue, container, session); referenceDescriptor = getDescriptor(nestedRecord, session, null); objectValue = buildObjectForNonXMLRoot(referenceDescriptor, getConverter(), query, record, nestedRecord, joinManager, session, next, container, cp); } else { String schemaType = ((Element) next).getAttributeNS(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, XMLConstants.SCHEMA_TYPE_ATTRIBUTE); try { QName qname = new QName(nestedRecord.getNamespaceURI(), nestedRecord.getLocalName()); referenceDescriptor = getDescriptor(nestedRecord, session, qname); } catch (XMLMarshalException e) { referenceDescriptor = null; if (getKeepAsElementPolicy() == UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT || (referenceDescriptor == null && getKeepAsElementPolicy() == UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT)) { Object objVal = buildObjectNoReferenceDescriptor(record, getConverter(), session, next, null, null);
public Object valueFromRow(AbstractRecord row, JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, CacheKey cacheKey, AbstractSession executionSession, boolean isTargetProtected, Boolean[] wasCacheUsed) throws DatabaseException { XMLRecord record = (XMLRecord) row; if (getField() != null) { //Get the nested row represented by this field to build the collection from Object nested = record.get(getField()); if (nested instanceof Vector) { nested = ((Vector) nested).firstElement(); } if (!(nested instanceof XMLRecord)) { return null; } record = (XMLRecord) nested; } return buildObjectValuesFromDOMRecord((DOMRecord) record, executionSession, sourceQuery, joinManager); }
public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session) throws DescriptorException { if (this.isReadOnly()) { return; Object attributeValue = this.getAttributeValueFromObject(object); Node root = record.getDOM(); org.w3c.dom.Document doc = record.getDocument(); root = XPathEngine.getInstance().create((XMLField) getField(), record.getDOM(), session); DOMRecord rootRecord = new DOMRecord(root); rootRecord.setSession(session); ContainerPolicy cp = this.getContainerPolicy(); ArrayList childNodes = getUnmappedChildNodes(record.getDOM().getChildNodes()); Object iter = cp.iteratorFor(attributeValue); int childNodeCount = 0; while (cp.hasNext(iter) && (childNodeCount < childNodes.size())) { Object element = cp.next(iter, session); if(this.getConverter() != null) { element = getConverter().convertObjectValueToDataValue(element, session, record.getMarshaller()); if (usesXMLRoot() && (element instanceof XMLRoot)) { xmlRootField = new XMLField(); wasXMLRoot = true; DOMRecord nestedRecord = (DOMRecord) buildCompositeRow(element, session, referenceDescriptor, row, xmlRootField, element, wasXMLRoot); if (nestedRecord != null) { if (nestedRecord.getDOM() != nextChild) {
ContainerPolicy cp = getContainerPolicy(); Object container = null; if (reuseContainer) { Object currentObject = record.getCurrentObject(); Object value = getAttributeAccessor().getAttributeValueFromObject(currentObject); container = value != null ? value : cp.containerInstance(); } else { if (isUnmappedContent(next)) { if ((next.getNodeType() == Node.TEXT_NODE) && this.isMixedContent()) { if (next.getNodeValue().trim().length() > 0) { objectValue = next.getNodeValue(); if(getConverter() != null) { objectValue = getConverter().convertDataValueToObjectValue(objectValue, session, record.getUnmarshaller()); referenceDescriptor = getDescriptor(nestedRecord, session, null); objectValue = buildObjectForNonXMLRoot(referenceDescriptor, getConverter(), query, record, nestedRecord, joinManager, session, next, container, cp); } else { String schemaType = ((Element) next).getAttributeNS(XMLConstants.SCHEMA_INSTANCE_URL, XMLConstants.SCHEMA_TYPE_ATTRIBUTE); try { QName qname = new QName(nestedRecord.getNamespaceURI(), nestedRecord.getLocalName()); referenceDescriptor = getDescriptor(nestedRecord, session, qname); } catch (XMLMarshalException e) { referenceDescriptor = null; if ((referenceDescriptor != null) && (getKeepAsElementPolicy() != UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT)) { buildObjectAndWrapInXMLRoot(referenceDescriptor, getConverter(), query, record, nestedRecord, joinManager, session, next, container, cp); } else if ((referenceDescriptor == null) && (getKeepAsElementPolicy() == UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT)) {
descriptor.addMapping(allMapping); XMLAnyCollectionMapping orderedAttributesMapping = new XMLAnyCollectionMapping(); orderedAttributesMapping.setAttributeName("orderedAttributes"); descriptor.addMapping(orderedAttributesMapping);
public SDOChangeSummaryType(SDOTypeHelper sdoTypeHelper) { super(SDOConstants.SDO_URL, SDOConstants.CHANGESUMMARY, sdoTypeHelper); setInstanceClass(ChangeSummary.class); xmlDescriptor.setJavaClass(SDOChangeSummary.class); xmlDescriptor.setSequencedObject(false); XMLDirectMapping loggingMapping = new XMLDirectMapping(); loggingMapping.setAttributeName("loggingMapping"); loggingMapping.setXPath("@logging"); loggingMapping.setNullValue(Boolean.TRUE); xmlDescriptor.addMapping(loggingMapping); XMLCompositeDirectCollectionMapping createdMapping = new XMLCompositeDirectCollectionMapping(); createdMapping.setAttributeName("createdXPaths"); createdMapping.setXPath("@create"); createdMapping.useCollectionClass(ArrayList.class); ((XMLField)createdMapping.getField()).setUsesSingleNode(true); xmlDescriptor.addMapping(createdMapping); XMLCompositeDirectCollectionMapping deletedMapping = new XMLCompositeDirectCollectionMapping(); deletedMapping.setAttributeName("deletedXPaths"); deletedMapping.setXPath("@delete"); deletedMapping.useCollectionClass(ArrayList.class); ((XMLField)deletedMapping.getField()).setUsesSingleNode(true); xmlDescriptor.addMapping(deletedMapping); XMLAnyCollectionMapping aChangeMapping = new XMLAnyCollectionMapping(); aChangeMapping.setAttributeName("modifiedDoms"); aChangeMapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT); aChangeMapping.useCollectionClass(ArrayList.class); xmlDescriptor.addMapping(aChangeMapping); }
nr.put(SERVICE_NAMESPACE_PREFIX, tns); nr.setDefaultNamespaceURI(tns); XMLAnyCollectionMapping parametersMapping = new XMLAnyCollectionMapping(); parametersMapping.setAttributeName("parameters"); parametersMapping.setAttributeAccessor(new AttributeAccessor() { Project oxProject; DBWSAdapter dbwsAdapter; parametersMapping.setKeepAsElementPolicy(KEEP_UNKNOWN_AS_ELEMENT); invocationDescriptor.addMapping(parametersMapping); oxProject.addDescriptor(invocationDescriptor);
mappingsList.addAll(getChoiceElementMappings().values()); if(isAny){ anyMapping = new XMLAnyCollectionMapping(); anyMapping.setMixedContent(false); anyMapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT); anyMapping.setUseXMLRoot(true); mappingsList.add(anyMapping);
boolean wasXMLRoot = false; if (usesXMLRoot() && (element instanceof XMLRoot)) { wasXMLRoot = true; xmlRootField = new XMLField(); writeSimpleValue(xmlRootField, element, originalObject, record, doc, root, wasXMLRoot, session); } else if (element instanceof org.w3c.dom.Node) { Node importedCopy = doc.importNode((Node) element, true); XMLDescriptor referenceDescriptor = (XMLDescriptor) session.getDescriptor(element.getClass()); if (referenceDescriptor == null) { writeSimpleValue(xmlRootField, element, originalObject, record, doc, root, wasXMLRoot, session); return; DOMRecord nestedRecord = (DOMRecord) buildCompositeRow(element, session, referenceDescriptor, row, xmlRootField, originalObject, wasXMLRoot); if (nestedRecord != null) { root.appendChild(nestedRecord.getDOM());
addMappingToOwner(false, indexToAdd); } else if (isNameCollision()) { xmlMapping = new XMLAnyCollectionMapping(); xmlMapping.setAttributeName(getName()); addMappingToOwner(true, indexToAdd);
@Override public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session, WriteType writeType) throws DescriptorException { if (this.isReadOnly()) { return; Object attributeValue = this.getAttributeValueFromObject(object); Node root = record.getDOM(); org.w3c.dom.Document doc = record.getDocument(); root = XPathEngine.getInstance().create((XMLField) getField(), record.getDOM(), session); DOMRecord rootRecord = new DOMRecord(root); rootRecord.setSession(session); ContainerPolicy cp = this.getContainerPolicy(); ArrayList childNodes = getUnmappedChildNodes(record.getDOM().getChildNodes()); Object iter = cp.iteratorFor(attributeValue); int childNodeCount = 0; while (cp.hasNext(iter) && (childNodeCount < childNodes.size())) { Object element = cp.next(iter, session); element = convertObjectValueToDataValue(element, session, record.getMarshaller()); Object originalObject = element; Node nextChild = null; if (usesXMLRoot() && (element instanceof XMLRoot)) { xmlRootField = new XMLField(); wasXMLRoot = true; DOMRecord nestedRecord = (DOMRecord) buildCompositeRow(element, session, referenceDescriptor, row, xmlRootField, element, wasXMLRoot); if (nestedRecord != null) {
descriptor.addMapping(allMapping); XMLAnyCollectionMapping orderedAttributesMapping = new XMLAnyCollectionMapping(); orderedAttributesMapping.setAttributeName("orderedAttributes"); descriptor.addMapping(orderedAttributesMapping);
public SDOChangeSummaryType(SDOTypeHelper sdoTypeHelper) { super(SDOConstants.SDO_URL, SDOConstants.CHANGESUMMARY, sdoTypeHelper); setInstanceClass(ChangeSummary.class); xmlDescriptor.setJavaClass(SDOChangeSummary.class); xmlDescriptor.setSequencedObject(false); XMLDirectMapping loggingMapping = new XMLDirectMapping(); loggingMapping.setAttributeName("loggingMapping"); loggingMapping.setXPath("@logging"); loggingMapping.setNullValue(Boolean.TRUE); xmlDescriptor.addMapping(loggingMapping); XMLCompositeDirectCollectionMapping createdMapping = new XMLCompositeDirectCollectionMapping(); createdMapping.setAttributeName("createdXPaths"); createdMapping.setXPath("@create"); createdMapping.useCollectionClass(ArrayList.class); ((XMLField)createdMapping.getField()).setUsesSingleNode(true); xmlDescriptor.addMapping(createdMapping); XMLCompositeDirectCollectionMapping deletedMapping = new XMLCompositeDirectCollectionMapping(); deletedMapping.setAttributeName("deletedXPaths"); deletedMapping.setXPath("@delete"); deletedMapping.useCollectionClass(ArrayList.class); ((XMLField)deletedMapping.getField()).setUsesSingleNode(true); xmlDescriptor.addMapping(deletedMapping); XMLAnyCollectionMapping aChangeMapping = new XMLAnyCollectionMapping(); aChangeMapping.setAttributeName("modifiedDoms"); aChangeMapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT); aChangeMapping.useCollectionClass(ArrayList.class); xmlDescriptor.addMapping(aChangeMapping); }
nr.put(SERVICE_NAMESPACE_PREFIX, tns); nr.setDefaultNamespaceURI(tns); XMLAnyCollectionMapping parametersMapping = new XMLAnyCollectionMapping(); parametersMapping.setAttributeName("parameters"); parametersMapping.setAttributeAccessor(new AttributeAccessor() { Project oxProject; DBWSAdapter dbwsAdapter; parametersMapping.setKeepAsElementPolicy(KEEP_UNKNOWN_AS_ELEMENT); invocationDescriptor.addMapping(parametersMapping); oxProject.addDescriptor(invocationDescriptor);
mappingsList.addAll(getChoiceElementMappings().values()); if(isAny){ anyMapping = new XMLAnyCollectionMapping(); anyMapping.setMixedContent(false); anyMapping.setKeepAsElementPolicy(UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT); anyMapping.setUseXMLRoot(true); mappingsList.add(anyMapping);
boolean wasXMLRoot = false; if (usesXMLRoot() && (element instanceof XMLRoot)) { wasXMLRoot = true; xmlRootField = new XMLField(); writeSimpleValue(xmlRootField, element, originalObject, record, doc, root, wasXMLRoot, session); } else if (element instanceof org.w3c.dom.Node) { Node importedCopy = doc.importNode((Node) element, true); XMLDescriptor referenceDescriptor = (XMLDescriptor) session.getDescriptor(element.getClass()); if (referenceDescriptor == null) { writeSimpleValue(xmlRootField, element, originalObject, record, doc, root, wasXMLRoot, session); return; DOMRecord nestedRecord = (DOMRecord) buildCompositeRow(element, session, referenceDescriptor, row, xmlRootField, originalObject, wasXMLRoot); if (nestedRecord != null) { root.appendChild(nestedRecord.getDOM());
addMappingToOwner(false, indexToAdd); } else if (isNameCollision()) { xmlMapping = new XMLAnyCollectionMapping(); xmlMapping.setAttributeName(getName()); addMappingToOwner(true, indexToAdd);
public Object valueFromRow(AbstractRecord row, JoinedAttributeManager joinManager, ObjectBuildingQuery sourceQuery, CacheKey cacheKey, AbstractSession executionSession, boolean isTargetProtected, Boolean[] wasCacheUsed) throws DatabaseException { XMLRecord record = (XMLRecord) row; if (getField() != null) { //Get the nested row represented by this field to build the collection from Object nested = record.get(getField()); if (nested instanceof Vector) { nested = ((Vector) nested).firstElement(); } if (!(nested instanceof XMLRecord)) { return null; } record = (XMLRecord) nested; } return buildObjectValuesFromDOMRecord((DOMRecord) record, executionSession, sourceQuery, joinManager); }