public Map<String, EntityType> getEntitiesTypesMap(boolean isAttribute) { Map<String, EntityType> entitiesTypes = isAttribute ? attributeTypeMap : elementTypeMap; if (entitiesTypes.isEmpty()) { final Map<XPathFragment, XPathNode> nodeMap = isAttribute ? xPathNode.getAttributeChildrenMap() : xPathNode.getNonAttributeChildrenMap(); if (nodeMap != null) { for(Map.Entry<XPathFragment, XPathNode> entry : nodeMap.entrySet()) { entitiesTypes.put(entry.getKey().getLocalName(), new EntityType(entry.getKey().getXMLField().getType())); } } } return entitiesTypes; }
actualNodeWrapper == null ? null : actualNodeWrapper.xPathNode.getNonAttributeChildrenMap(); final MappingNodeValue nodeValue = (MappingNodeValue) childNode.getNodeValue();
private boolean isTextValue(String localName, UnmarshalRecord contentHandler_) { XPathNode currentNode = ((UnmarshalRecord) contentHandler_).getXPathNode(); if (currentNode == null) { return textWrapper != null && textWrapper.equals(localName); } return ((currentNode.getNonAttributeChildrenMap() == null || currentNode.getNonAttributeChildrenMap().size() == 0 || (currentNode.getNonAttributeChildrenMap().size() == 1 && currentNode.getTextNode() != null) ) && textWrapper != null && textWrapper.equals(localName) ); }
public XPathNode addChild(XPathFragment anXPathFragment, NodeValue aNodeValue, NamespaceResolver namespaceResolver) { if (null != anXPathFragment && anXPathFragment.nameIsText()) { if (aNodeValue.isOwningNode(anXPathFragment)) { XPathNode textXPathNode = this.getTextNode(); if(textXPathNode == null) { textXPathNode = new XPathNode(); textXPathNode.setParent(this); textXPathNode.setXPathFragment(anXPathFragment); if (aNodeValue.isMarshalNodeValue()) { textXPathNode.setMarshalNodeValue(aNodeValue); textXPathNode.setUnmarshalNodeValue(aNodeValue); this.setTextNode(textXPathNode); if(null != nonAttributeChildren && !nonAttributeChildren.contains(textXPathNode)) { nonAttributeChildren.add(textXPathNode); XPathNode xPathNode = new XPathNode(); xPathNode.setXPathFragment(anXPathFragment); xPathNode.setMarshalNodeValue(aNodeValue); if(aNodeValue.isUnmarshalNodeValue() && xPathNode.getUnmarshalNodeValue() == null) { xPathNode.setUnmarshalNodeValue(aNodeValue); xPathNode.setParent(this); if (aNodeValue instanceof XMLAnyAttributeMappingNodeValue || (aNodeValue instanceof XMLVariableXPathObjectMappingNodeValue && ((XMLVariableXPathObjectMappingNodeValue)aNodeValue).getMapping().isAttribute() ) || (aNodeValue instanceof XMLVariableXPathCollectionMappingNodeValue && ((XMLVariableXPathCollectionMappingNodeValue)aNodeValue).getMapping().isAttribute() )) { setAnyAttributeNodeValue((MappingNodeValue)aNodeValue); anyAttributeNode = xPathNode;
XPathNode node = ur.getNonAttributeXPathNode(uri, parentLocalName, parentLocalName, null); if (node != null) { NodeValue nv = node.getNodeValue(); if (nv == null && node.getTextNode() != null) { nv = node.getTextNode().getUnmarshalNodeValue(); currentFragment.setNamespaceURI(uri); currentFragment.setNamespaceAware(isNamespaceAware()); XPathNode groupingXPathNode = unmarshalRecordXPathNode.getNonAttributeChildrenMap().get(currentFragment); if (groupingXPathNode != null) { if (groupingXPathNode.getUnmarshalNodeValue() instanceof CollectionGroupingElementNodeValue) { groupingXPathFragment = groupingXPathNode.getXPathFragment(); contentHandler.startElement(uri, parentLocalName, parentLocalName, new AttributesImpl()); XPathNode itemXPathNode = groupingXPathNode.getNonAttributeChildren().get(0); itemXPathFragment = itemXPathNode.getXPathFragment(); } else if (groupingXPathNode.getUnmarshalNodeValue() == null) { XPathNode itemXPathNode = groupingXPathNode.getNonAttributeChildren().get(0); if (itemXPathNode != null) { if ((itemXPathNode.getUnmarshalNodeValue()).isContainerValue()) { groupingXPathFragment = groupingXPathNode.getXPathFragment(); contentHandler.startElement(uri, parentLocalName, parentLocalName, new AttributesImpl()); itemXPathFragment = itemXPathNode.getXPathFragment(); if (!isNamespaceAware() && localName.equals(Constants.SCHEMA_TYPE_ATTRIBUTE) && !((UnmarshalRecord) contentHandler).getXPathNode().hasTypeChild()) { return;
public XPathNode addChild(XPathFragment anXPathFragment, NodeValue aNodeValue, NamespaceResolver namespaceResolver) { if (null != anXPathFragment && anXPathFragment.nameIsText()) { if (aNodeValue.isOwningNode(anXPathFragment)) { XPathNode textXPathNode = new XPathNode(); textXPathNode.setParent(this); textXPathNode.setXPathFragment(anXPathFragment); if (aNodeValue.isMarshalNodeValue()) { textXPathNode.setMarshalNodeValue(aNodeValue); textXPathNode.setUnmarshalNodeValue(aNodeValue); this.setTextNode(textXPathNode); if (null == nonAttributeChildren) { nonAttributeChildren = new ArrayList(); XPathNode xPathNode = new XPathNode(); xPathNode.setXPathFragment(anXPathFragment); xPathNode.setMarshalNodeValue(aNodeValue); if(aNodeValue.isUnmarshalNodeValue() && xPathNode.getUnmarshalNodeValue() == null) { xPathNode.setUnmarshalNodeValue(aNodeValue); xPathNode.setParent(this); if (aNodeValue instanceof XMLAnyAttributeMappingNodeValue) { setAnyAttributeNodeValue((XMLAnyAttributeMappingNodeValue)aNodeValue); anyAttributeNode = xPathNode; } else { setAnyNode(xPathNode);
if (null != xPathNode.getUnmarshalNodeValue()) { xPathNode.getUnmarshalNodeValue().endElement(xPathFragment, this); } else { XPathNode textNode = xPathNode.getTextNode(); if (null != textNode && textNode.isWhitespaceAware() && getStringBuffer().length() == 0) { if (!isXsiNil) { if (textNode.getUnmarshalNodeValue().isMappingNodeValue()) { textNode.getUnmarshalNodeValue().endElement(xPathFragment, this); XPathFragment xPathFragment = xPathNode.getXPathFragment(); if(null != xPathFragment && xPathFragment.nameIsText()) { xPathNode = xPathNode.getParent(); if (null != xPathNode.getParent()) { xPathNode = xPathNode.getParent();
break; Map attributeChildrenMap = xPathNode.getAttributeChildrenMap(); if (null == attributeChildrenMap) { xPathNode = null; xPathNode = xPathNode.getTextNode(); } else { Map nonAttributeChildrenMap = xPathNode.getNonAttributeChildrenMap(); if (null == nonAttributeChildrenMap) { xPathNode = null; if (xPathNode.getNodeValue().isMappingNodeValue()) { MappingNodeValue mappingNodeValue = (MappingNodeValue) xPathNode.getNodeValue(); return mappingNodeValue.getMapping();
public boolean marshalAttributes(MarshalRecord marshalRecord, Object object, AbstractSession session) { boolean hasValue = false; NamespaceResolver namespaceResolver = ((XMLDescriptor)this.getDescriptor()).getNamespaceResolver(); List<XPathNode> attributeChildren = rootXPathNode.getAttributeChildren(); if (null != attributeChildren) { for (int x = 0, attributeChildrenSize=attributeChildren.size(); x < attributeChildrenSize; x++) { hasValue = attributeChildren.get(x).marshal(marshalRecord, object, session, namespaceResolver, null, ObjectMarshalContext.getInstance()) || hasValue; } } if (rootXPathNode.getAnyAttributeNode() != null) { hasValue = rootXPathNode.getAnyAttributeNode().marshal(marshalRecord, object, session, namespaceResolver, null, ObjectMarshalContext.getInstance()) || hasValue; } List<XPathNode> selfChildren = rootXPathNode.getSelfChildren(); if (null != selfChildren) { for (int x = 0, selfChildrenSize=selfChildren.size(); x < selfChildrenSize; x++) { selfChildren.get(x).marshalSelfAttributes(marshalRecord, object, session, namespaceResolver, marshalRecord.getMarshaller()); } } return hasValue; }
if(marshalRecord.isWrapperAsCollectionName() && null != nonAttributeChildren && nonAttributeChildren.size() == 1) { XPathNode childXPathNode = nonAttributeChildren.get(0); NodeValue childXPathNodeUnmarshalNodeValue = childXPathNode.getUnmarshalNodeValue(); if(childXPathNodeUnmarshalNodeValue != null && childXPathNodeUnmarshalNodeValue.isContainerValue()) { ContainerValue containerValue = (ContainerValue) childXPathNodeUnmarshalNodeValue; if(containerValue.isWrapperAllowedAsCollectionName()) { XPathNode wrapperXPathNode = new XPathNode(); wrapperXPathNode.setXPathFragment(this.getXPathFragment()); wrapperXPathNode.setMarshalNodeValue(childXPathNode.getMarshalNodeValue()); return wrapperXPathNode.marshal(marshalRecord, object, session, namespaceResolver, marshaller, marshalContext, rootFragment); for (int x = 0, size = attributeChildren.size(); x < size; x++) { XPathNode xPathNode = attributeChildren.get(x); hasValue = xPathNode.marshal(marshalRecord, object, session, namespaceResolver, marshaller, ObjectMarshalContext.getInstance(), this.xPathFragment) || hasValue; hasValue = anyAttributeNode.marshal(marshalRecord, object, session, namespaceResolver, marshaller, ObjectMarshalContext.getInstance(), null) || hasValue; hasValue = textNode.marshal(marshalRecord, object, session, namespaceResolver, marshaller, ObjectMarshalContext.getInstance(), null) || hasValue; XPathNode xPathNode = (XPathNode)marshalContext.getNonAttributeChild(x, this); MarshalContext childMarshalContext = marshalContext.getMarshalContext(x); hasValue = xPathNode.marshal(marshalRecord, object, session, namespaceResolver, marshaller, childMarshalContext, this.xPathFragment) || hasValue;
XPathFragment xPathNodeXPathFragment = xPathNode.getXPathFragment(); if((null != xPathNodeXPathFragment && xPathNodeXPathFragment.nameIsText()) || xpathNodeIsMixedContent) { xpathNodeIsMixedContent = false; NodeValue xPathNodeUnmarshalNodeValue = xPathNode.getUnmarshalNodeValue(); if (null != xPathNodeUnmarshalNodeValue) { boolean isIncludedInAttributeGroup = true; if (xPathNode.getParent() != null) { xPathNode = xPathNode.getParent(); XPathFragment xpf = predictedNextXPathNode.getXPathFragment(); if (null != xpf && xPathNode == predictedNextXPathNode.getParent() && (localName == xpf.getLocalName() || localName.equals(xpf.getLocalName())) && (namespaceURI == xpf.getNamespaceURI() || namespaceURI.equals(xpf.getNamespaceURI())) && null == xpf.getPredicate() && !xpf.containsIndex()) { NodeValue parentNodeValue = xPathNode.getUnmarshalNodeValue(); if ((null == xPathNode.getXPathFragment()) && (parentNodeValue != null)) { XPathFragment parentFragment = new XPathFragment(); parentFragment.setNamespaceAware(isNamespaceAware()); if(node.getNullCapableValue() != null){ getNullCapableValues().add(node.getNullCapableValue()); NodeValue nodeValue = node.getUnmarshalNodeValue(); if (null != nodeValue) { boolean isIncludedInAttributeGroup = true; if(xPathNode.getAttributeChildren() != null || xPathNode.getAnyAttributeNodeValue() != null || selfRecords != null) { for (int i = 0, size=atts.getLength(); i < size; i++) { String attNamespace = atts.getURI(i);
XPathFragment rootFragment) { lazyInitialize(); XPathNode textNode = rootXPathNode.getTextNode(); List<XPathNode> nonAttributeChildren = rootXPathNode.getNonAttributeChildren(); if (null == textNode && null == nonAttributeChildren) { return record; textNode.marshal((MarshalRecord) record, object, session, namespaceResolver, marshaller, marshalContext, rootFragment); } else { if (node == null) { XPathNode n = new XPathNode(); CompositeObjectMapping m = new XMLCompositeObjectMapping(); m.setXPath("."); XMLCompositeObjectMappingNodeValue nv = new XMLCompositeObjectMappingNodeValue(m); n.setMarshalNodeValue(nv); nv.marshalSingleValue(new XPathFragment("."), marshalRecord, null, object, session, namespaceResolver, marshalContext); } else { for (int x = 0, size = marshalContext.getNonAttributeChildrenSize(node); x < size; x++) { XPathNode xPathNode = (XPathNode) marshalContext.getNonAttributeChild(x, node); xPathNode.marshal((MarshalRecord) record, object, session, namespaceResolver, marshaller, marshalContext.getMarshalContext(x), rootFragment);
public Object getNonAttributeChild(int index, XPathNode xPathNode) { Setting setting = settings.get(index); if(null == setting.getName()) { return xPathNode.getAnyNode(); } else { if (setting.getName().equals(Constants.TEXT)) { return xPathNode.getTextNode(); } else { indexFragment.setLocalName(null); indexFragment.setXPath(setting.getName()); indexFragment.setNamespaceURI(setting.getNamespaceURI()); return xPathNode.getNonAttributeChildrenMap().get(indexFragment); } } }
XPathNode textNode = xPathNode.getTextNode(); if (null == textNode) { textNode = xPathNode.getAnyNode(); if (textNode != null) { if (0 == length) { if (!textNode.isWhitespaceAware() && tmpString.trim().length() == 0) { return; unmarshalContext.characters(this); if (null != xPathNode.getUnmarshalNodeValue()) { getStringBuffer().append(ch, start, length);
if (null != xPathNode.getSelfChildren()) { int selfChildrenSize = xPathNode.getSelfChildren().size(); selfRecords = new ArrayList<UnmarshalRecord>(selfChildrenSize); for (int x = 0; x < selfChildrenSize; x++) { XPathNode selfNode = (XPathNode)xPathNode.getSelfChildren().get(x); if (null != selfNode.getNodeValue()) { selfRecords.add(selfNode.getNodeValue().buildSelfRecord(this, attributes));
Map<XPathFragment, XPathNode> nonAttributeChildrenMap = xPathNode.getNonAttributeChildrenMap(); if(resultNode != null && resultNode.hasPredicateSiblings()) { nonPredicateNode = resultNode; resultNode = null; if(null == resultNode && xPathNode.getTextNode() != null){ XPathFragment textWrapperFragment = getTextWrapperFragment(); if(textWrapperFragment != null && localName.equals(textWrapperFragment.getLocalName())){ resultNode = xPathNode.getTextNode(); resultNode = xPathNode.getAnyNode();
public void attribute(UnmarshalRecord unmarshalRecord, String namespaceURI, String localName, String value) { Descriptor referenceDescriptor = (Descriptor) getMapping().getReferenceDescriptor(); ObjectBuilder treeObjectBuilder = (ObjectBuilder) referenceDescriptor.getObjectBuilder(); MappingNodeValue textMappingNodeValue = (MappingNodeValue) treeObjectBuilder.getRootXPathNode().getTextNode().getNodeValue(); Mapping textMapping = textMappingNodeValue.getMapping(); Object childObject = referenceDescriptor.getInstantiationPolicy().buildNewInstance(); if(textMapping.isAbstractDirectMapping()) { DirectMapping xmlDirectMapping = (DirectMapping) textMappingNodeValue.getMapping(); Field xmlField = (Field) xmlDirectMapping.getField(); Object realValue = unmarshalRecord.getXMLReader().convertValueBasedOnSchemaType(xmlField, value, (ConversionManager) unmarshalRecord.getSession().getDatasourcePlatform().getConversionManager(), unmarshalRecord); Object convertedValue = xmlDirectMapping.getAttributeValue(realValue, unmarshalRecord.getSession(), unmarshalRecord); xmlDirectMapping.setAttributeValueInObject(childObject, convertedValue); } else { Object oldChildObject = unmarshalRecord.getCurrentObject(); CompositeObjectMapping nestedXMLCompositeObjectMapping = (CompositeObjectMapping) textMappingNodeValue.getMapping(); unmarshalRecord.setCurrentObject(childObject); textMappingNodeValue.attribute(unmarshalRecord, namespaceURI, localName, value); unmarshalRecord.setCurrentObject(oldChildObject); } setXPathInObject(namespaceURI, localName, childObject); setOrAddAttributeValue(unmarshalRecord, childObject, null, null); }
if(mapping.isAttribute()){ ObjectBuilder tob = (ObjectBuilder) mapping.getReferenceDescriptor().getObjectBuilder(); MappingNodeValue textMappingNodeValue = (MappingNodeValue) tob.getRootXPathNode().getTextNode().getMarshalNodeValue(); Mapping textMapping = textMappingNodeValue.getMapping(); if(textMapping.isAbstractDirectMapping()) { getXPathNode().startElement(marshalRecord, rootFragment, object, session, marshalRecord.getNamespaceResolver(), objectBuilder, value); writeExtraNamespaces(extraNamespaces, marshalRecord, session);
public NodeValue getAttributeChildNodeValue(String namespace, String localName) { Map attributeChildrenMap = xPathNode.getAttributeChildrenMap(); if (attributeChildrenMap != null) { xPathFragment.setLocalName(localName); if(namespace != null && namespace.length() == 0){ xPathFragment.setNamespaceURI(null); } else { xPathFragment.setNamespaceURI(namespace); } XPathNode node = (XPathNode)attributeChildrenMap.get(xPathFragment); if (node != null) { return node.getUnmarshalNodeValue(); } } return null; }
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { if(null != xPathNode.getXPathFragment() && xPathNode.getXPathFragment().nameIsText()) { if (null != xPathNode.getUnmarshalNodeValue()) { xPathNode.getUnmarshalNodeValue().endElement(xPathFragment, this); if (xPathNode.getParent() != null) { xPathNode = xPathNode.getParent(); NodeValue parentNodeValue = xPathNode.getUnmarshalNodeValue(); if ((null == xPathNode.getXPathFragment()) && (parentNodeValue != null)) { XPathFragment parentFragment = new XPathFragment(); if(namespaceURI != null && namespaceURI.length() == 0){ NodeValue nodeValue = node.getUnmarshalNodeValue(); if (null != nodeValue) { if (!nodeValue.startElement(xPathFragment, this, atts)) { attributeNodeValue.attribute(this, attNamespace, attLocalName, value); } else { if (xPathNode.getAnyAttributeNodeValue() != null) { xPathNode.getAnyAttributeNodeValue().attribute(this, attNamespace, attLocalName, value);