public List<XMLEntry> selectNodes(Node contextNode, List<XMLField> xmlFields, XMLNamespaceResolver xmlNamespaceResolver) throws XMLMarshalException { List<XMLEntry> nodes = new ArrayList<XMLEntry>(); List<XPathFragment> firstFragments = new ArrayList<XPathFragment>(xmlFields.size()); for(XMLField nextField:xmlFields) { firstFragments.add(nextField.getXPathFragment()); } selectNodes(contextNode, firstFragments, xmlNamespaceResolver, nodes); return nodes; }
private XPathFragment getFragmentToCompare(XMLField field, XMLField context) { if (field == null) { return null; } if (context == null) { return field.getXPathFragment(); } XPathFragment fieldFrag = field.getXPathFragment(); XPathFragment contextFrag = context.getXPathFragment(); while ((fieldFrag != null) && (contextFrag != null)) { if (fieldFrag.equals(contextFrag)) { if (contextFrag.getNextFragment() == null) { return fieldFrag.getNextFragment(); } else { contextFrag = contextFrag.getNextFragment(); fieldFrag = fieldFrag.getNextFragment(); } } else { return null; } } return null; }
private XPathFragment getFragmentToCompare(XMLField field, XMLField context) { if (field == null) { return null; } if (context == null) { return field.getXPathFragment(); } XPathFragment fieldFrag = field.getXPathFragment(); XPathFragment contextFrag = context.getXPathFragment(); while ((fieldFrag != null) && (contextFrag != null)) { if (fieldFrag.equals(contextFrag)) { if (contextFrag.getNextFragment() == null) { return fieldFrag.getNextFragment(); } else { contextFrag = contextFrag.getNextFragment(); fieldFrag = fieldFrag.getNextFragment(); } } else { return null; } } return null; }
private XMLField getFieldForName(String localName, String namespaceUri) { Iterator<XMLField> fields = fieldToNodeValues.keySet().iterator(); while(fields.hasNext()) { XMLField nextField = fields.next(); XPathFragment fragment = nextField.getXPathFragment(); while(fragment != null && (!fragment.nameIsText())) { if(fragment.getNextFragment() == null || fragment.getHasText()) { if(fragment.getLocalName().equals(localName)) { String fragUri = fragment.getNamespaceURI(); if((namespaceUri == null && fragUri == null) || (namespaceUri != null && fragUri != null && namespaceUri.equals(fragUri))) { return nextField; } } } fragment = fragment.getNextFragment(); } } return null; }
public XMLCollectionReferenceMappingMarshalNodeValue(XMLCollectionReferenceMapping xmlCollectionReferenceMapping) { this.xmlCollectionReferenceMapping = xmlCollectionReferenceMapping; branchNode = new XPathNode(); NamespaceResolver namespaceResolver = ((XMLDescriptor) xmlCollectionReferenceMapping.getDescriptor()).getNamespaceResolver(); List fkFields = xmlCollectionReferenceMapping.getFields(); for(int x=0, fkFieldsSize=fkFields.size(); x<fkFieldsSize; x++) { XMLField fkField = (XMLField) fkFields.get(x); branchNode.addChild(fkField.getXPathFragment(), new XMLCollectionReferenceMappingFKMarshalNodeValue(xmlCollectionReferenceMapping, fkField), namespaceResolver); } }
private XMLField getFieldForName(String localName, String namespaceUri) { Iterator fields = getFields().iterator(); while(fields.hasNext()) { XMLField nextField = (XMLField)fields.next(); XPathFragment fragment = nextField.getXPathFragment(); while(fragment != null && (!fragment.nameIsText())) { if(fragment.getNextFragment() == null || fragment.getHasText()) { if(fragment.getLocalName().equals(localName)) { String fragUri = fragment.getNamespaceURI(); if((namespaceUri == null && fragUri == null) || (namespaceUri != null && fragUri != null && namespaceUri.equals(fragUri))) { return nextField; } } } fragment = fragment.getNextFragment(); } } return null; } public void writeSingleValue(Object value, Object parent, XMLRecord row, AbstractSession session) {
private XMLField getFieldForName(String localName, String namespaceUri) { Iterator fields = getFields().iterator(); while(fields.hasNext()) { XMLField nextField = (XMLField)fields.next(); XPathFragment fragment = nextField.getXPathFragment(); while(fragment != null && (!fragment.nameIsText())) { if(fragment.getNextFragment() == null || fragment.getHasText()) { if(fragment.getLocalName().equals(localName)) { String fragUri = fragment.getNamespaceURI(); if((namespaceUri == null && fragUri == null) || (namespaceUri != null && fragUri != null && namespaceUri.equals(fragUri))) { return nextField; } } } fragment = fragment.getNextFragment(); } } return null; } public void writeSingleValue(Object value, Object parent, XMLRecord row, AbstractSession session) {
private XMLField getFieldForName(String localName, String namespaceUri) { Iterator fields = getFields().iterator(); while(fields.hasNext()) { XMLField nextField = (XMLField)fields.next(); XPathFragment fragment = nextField.getXPathFragment(); while(fragment != null && (!fragment.nameIsText())) { if(fragment.getNextFragment() == null || fragment.getHasText()) { if(fragment.getLocalName().equals(localName)) { String fragUri = fragment.getNamespaceURI(); if((namespaceUri == null && fragUri == null) || (namespaceUri != null && fragUri != null && namespaceUri.equals(fragUri))) { return nextField; } } } fragment = fragment.getNextFragment(); } } return null; } public void writeSingleValue(Object value, Object parent, XMLRecord row, AbstractSession session) {
public Element createUnownedElement(Node parent, XMLField xmlField) { XPathFragment lastFragment = xmlField.getXPathFragment(); while (lastFragment.getNextFragment() != null) { lastFragment = lastFragment.getNextFragment(); } String nodeName = lastFragment.getShortName(); String namespace = resolveNamespacePrefix(lastFragment, getNamespaceResolverForField(xmlField)); Element elem = parent.getOwnerDocument().createElementNS(namespace, nodeName); if (lastFragment.isGeneratedPrefix()) { elem.setAttributeNS(XMLConstants.XMLNS_URL, XMLConstants.XMLNS + XMLConstants.COLON + lastFragment.getPrefix(), lastFragment.getNamespaceURI()); } return elem; }
/** * Marshal a namespace declaration for the given prefix and url * @param prefix * @param namespaceURI */ public void namespaceDeclaration(String prefix, String namespaceURI){ String existingPrefix = getNamespaceResolver().resolveNamespaceURI(namespaceURI); if(existingPrefix == null || (existingPrefix != null && !existingPrefix.equals(XMLConstants.EMPTY_STRING) && !existingPrefix.equals(prefix))){ XMLField xmlField = new XMLField("@" + javax.xml.XMLConstants.XMLNS_ATTRIBUTE + XMLConstants.COLON + prefix); xmlField.setNamespaceResolver(getNamespaceResolver()); xmlField.getXPathFragment().setNamespaceURI(javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI); add(xmlField, namespaceURI); } }
/** * Marshal a namespace declaration for the given prefix and url * @param prefix * @param namespaceURI */ public void namespaceDeclaration(String prefix, String namespaceURI){ String existingPrefix = getNamespaceResolver().resolveNamespaceURI(namespaceURI); if(existingPrefix == null || (existingPrefix != null && !existingPrefix.equals(XMLConstants.EMPTY_STRING) && !existingPrefix.equals(prefix))){ XMLField xmlField = new XMLField("@" + javax.xml.XMLConstants.XMLNS_ATTRIBUTE + XMLConstants.COLON + prefix); xmlField.setNamespaceResolver(getNamespaceResolver()); xmlField.getXPathFragment().setNamespaceURI(javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI); add(xmlField, namespaceURI); } }
/** * Build and return an Attribute for a given XMLDirectMapping. * * @param mapping * @param schemaType * @return */ protected Attribute buildAttribute(XMLDirectMapping mapping, String schemaType) { XPathFragment frag = ((XMLField) mapping.getField()).getXPathFragment(); Attribute attr = new Attribute(); attr.setName(frag.getShortName()); attr.setType(schemaType); return attr; }
private String getUriForProperty(SDODataObject currentObject) { SDOProperty prop = currentObject.getContainmentProperty(); if (prop.getXmlMapping() != null) { return ((XMLField)prop.getXmlMapping().getField()).getXPathFragment().getNamespaceURI(); } else { return prop.getUri(); } }
private String getUriForProperty(SDODataObject currentObject) { SDOProperty prop = currentObject.getContainmentProperty(); if (prop.getXmlMapping() != null) { return ((XMLField)prop.getXmlMapping().getField()).getXPathFragment().getNamespaceURI(); } else { return prop.getUri(); } }
public NodeList selectNodes(Node contextNode, XMLField xmlField, XMLNamespaceResolver xmlNamespaceResolver, AbstractNullPolicy nullPolicy) throws XMLMarshalException { try { if (contextNode == null) { return null; } XPathFragment xPathFragment = xmlField.getXPathFragment(); // allow the platform to handle the advanced case if (xPathFragment.shouldExecuteSelectNodes()) { return xmlPlatform.selectNodesAdvanced(contextNode, xmlField.getXPath(), xmlNamespaceResolver); } return selectNodes(contextNode, xPathFragment, xmlNamespaceResolver, nullPolicy); } catch (Exception x) { throw XMLMarshalException.invalidXPathString(xmlField.getXPath(), x); } }
@Override public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session, WriteType writeType) { Object attributeValue = getAttributeValueFromObject(object); if (attributeValue == null) { XMLField field = (XMLField) getField(); if(getNullPolicy() != null && !field.getXPathFragment().isSelfFragment()) { getNullPolicy().directMarshal((Field) this.getField(), (XMLRecord) row, object); } return; } writeSingleValue(attributeValue, object, (XMLRecord) row, session); }
@Override public void writeFromObjectIntoRow(Object object, AbstractRecord row, AbstractSession session, WriteType writeType) { Object attributeValue = getAttributeValueFromObject(object); if (attributeValue == null) { XMLField field = (XMLField) getField(); if(getNullPolicy() != null && !field.getXPathFragment().isSelfFragment()) { getNullPolicy().directMarshal((Field) this.getField(), (XMLRecord) row, object); } return; } writeSingleValue(attributeValue, object, (XMLRecord) row, session); }
public void initialize(DatabaseMapping mapping, Session session) { XPathFragment fragment = associatedField.getXPathFragment(); while(fragment.getNextFragment() != null && !(fragment.getNextFragment().nameIsText())) { fragment = fragment.getNextFragment(); } if(fragment.hasNamespace() && associatedField.getNamespaceResolver() != null){ String uri = associatedField.getNamespaceResolver().resolveNamespacePrefix(fragment.getPrefix()); fragment.setNamespaceURI(uri); } this.rootFragment = fragment; this.mapping = mapping; }
public void initialize(DatabaseMapping mapping, Session session) { XPathFragment fragment = associatedField.getXPathFragment(); while(fragment.getNextFragment() != null && !(fragment.getNextFragment().nameIsText())) { fragment = fragment.getNextFragment(); } if(fragment.hasNamespace() && associatedField.getNamespaceResolver() != null){ String uri = associatedField.getNamespaceResolver().resolveNamespacePrefix(fragment.getPrefix()); fragment.setNamespaceURI(uri); } this.rootFragment = fragment; this.mapping = mapping; }
public void initialize(DatabaseMapping mapping, Session session) { XPathFragment fragment = associatedField.getXPathFragment(); while(fragment.getNextFragment() != null && !(fragment.getNextFragment().nameIsText())) { fragment = fragment.getNextFragment(); } if(fragment.hasNamespace() && associatedField.getNamespaceResolver() != null){ String uri = associatedField.getNamespaceResolver().resolveNamespacePrefix(fragment.getPrefix()); fragment.setNamespaceURI(uri); } this.rootFragment = fragment; this.mapping = mapping; }