/** * Convenience method that builds an XMLRoot wrapping a given object. * The local name and uri are set using the given Node. */ protected XMLRoot buildXMLRoot(Node node, Object object) { XMLRoot xmlRoot = new XMLRoot(); xmlRoot.setLocalName(node.getLocalName()); xmlRoot.setNamespaceURI(node.getNamespaceURI()); xmlRoot.setObject(object); return xmlRoot; }
/** * Return the name of the root element. * The root element is a global element of the XML Schema * with a type compatible to the DataObject. * @return the name of the root element. */ public String getRootElementName() { return super.getLocalName(); }
public Object convertObjectValueToDataValue(Object objectValue, Session session) { if(objectValue instanceof XMLRoot) { return ((XMLRoot)objectValue).getObject(); } else { return objectValue; } }
public Object wrapObjectInXMLRoot(Object object, String elementNamespaceUri, String elementLocalName, String elementPrefix, String encoding, String version, boolean forceWrap) { if (forceWrap || shouldWrapObject(object, elementNamespaceUri, elementLocalName, elementPrefix)) { // if the DOMRecord element != descriptor's default // root element, create an XMLRoot, populate and return it XMLRoot xmlRoot = new XMLRoot(); xmlRoot.setLocalName(elementLocalName); xmlRoot.setNamespaceURI(elementNamespaceUri); xmlRoot.setObject(object); xmlRoot.setEncoding(encoding); xmlRoot.setVersion(version); return xmlRoot; } return object; }
XMLRoot xmlRoot = new XMLRoot(); if (value instanceof XMLRoot) { xmlRoot.setLocalName(((XMLRoot) value).getLocalName()); xmlRoot.setNamespaceURI(((XMLRoot) value).getNamespaceURI()); xmlRoot.setObject(((XMLRoot) value).getObject()); } else { xmlRoot.setLocalName(sdoProperty.getName()); xmlRoot.setNamespaceURI(sdoProperty.getUri()); xmlRoot.setObject(value); QName schemaTypeQName = hlpr.getXSDTypeFromSDOType(property.getType()); if (schemaTypeQName != null && schemaTypeQName != XMLConstants.STRING_QNAME) { xmlRoot.setSchemaType(schemaTypeQName);
XMLDocument xmlDocument = createDocument((DataObject)((XMLRoot)unmarshalledObject).getObject(), ((XMLRoot)unmarshalledObject).getNamespaceURI(), ((XMLRoot)unmarshalledObject).getLocalName()); if(xmlRoot.getEncoding() != null) { xmlDocument.setEncoding(xmlRoot.getEncoding()); if(xmlRoot.getXMLVersion() != null) { xmlDocument.setXMLVersion(xmlRoot.getXMLVersion()); xmlDocument.setSchemaLocation(xmlRoot.getSchemaLocation()); xmlDocument.setNoNamespaceSchemaLocation(xmlRoot.getNoNamespaceSchemaLocation()); return xmlDocument; } else if (unmarshalledObject instanceof DataObject) {
public boolean marshalSingleValue(XPathFragment xPathFragment, MarshalRecord marshalRecord, Object object, Object value, AbstractSession session, NamespaceResolver namespaceResolver, MarshalContext marshalContext) { if(value instanceof XMLRoot) { XMLRoot root = (XMLRoot)value; XPathFragment fragment = this.xmlField.getXPathFragment(); while(fragment != null && !fragment.nameIsText) { if(fragment.getNextFragment() == null || fragment.getHasText()) { if(fragment.getLocalName().equals(root.getLocalName())) { String fragUri = fragment.getNamespaceURI(); String namespaceUri = root.getNamespaceURI(); if((namespaceUri == null && fragUri == null) || (namespaceUri != null && fragUri != null && namespaceUri.equals(fragUri))) { return this.choiceElementNodeValue.marshalSingleValue(xPathFragment, marshalRecord, object, value, session, namespaceResolver, marshalContext); } } } fragment = fragment.getNextFragment(); } //if we didn't find a node value associated with this xmlroot, try finding one for the //value's class if(root.getObject() != null && xmlChoiceMapping.getClassToFieldMappings().get(root.getObject().getClass()) == this.xmlField) { return this.choiceElementNodeValue.marshal(xPathFragment, marshalRecord, object, session, namespaceResolver); } } else { if(value != null && xmlChoiceMapping.getClassToFieldMappings().get(value.getClass()) == this.xmlField) { return this.choiceElementNodeValue.marshalSingleValue(xPathFragment, marshalRecord, object, value, session, namespaceResolver, marshalContext); } } return false; }
SDOProperty next = (SDOProperty) openContentProperties.get(i); XMLRoot root = new XMLRoot(); String localName = next.getXPath(); if (next.getType() != null) { if (!next.getType().isDataType()) { String uri = next.getUri(); root.setNamespaceURI(uri); } else { String uri = next.getUri(); root.setNamespaceURI(uri); root.setLocalName(localName); XMLRoot nextRoot = new XMLRoot(); nextRoot.setNamespaceURI(root.getNamespaceURI()); nextRoot.setLocalName(root.getLocalName()); Object nextItem = ((List)value).get(j); if ((next.getType() != null) && (next.getType().getXmlDescriptor() == null)) { nextItem = XMLConversionManager.getDefaultXMLManager().convertObject(nextItem, String.class); nextRoot.setObject(nextItem); returnList.add(nextRoot); value = XMLConversionManager.getDefaultXMLManager().convertObject(value, String.class); root.setObject(value); returnList.add(root);
XMLRoot xmlRoot = new XMLRoot(); xmlRoot.setLocalName(elementLocalName); xmlRoot.setNamespaceURI(elementNamespaceUri); xmlRoot.setObject(unmarshalRecord.getCurrentObject()); xmlRoot.setEncoding(unmarshalRecord.getEncoding()); xmlRoot.setVersion(unmarshalRecord.getVersion()); xmlRoot.setSchemaLocation(unmarshalRecord.getSchemaLocation()); xmlRoot.setNoNamespaceSchemaLocation(unmarshalRecord.getNoNamespaceSchemaLocation()); return xmlRoot;
isXMLRoot = true; XMLRoot xroot = (XMLRoot) object; version = xroot.getXMLVersion() != null ? xroot.getXMLVersion() : version; encoding = xroot.getEncoding() != null ? xroot.getEncoding() : encoding; if(isXMLRoot){ try{ session = xmlContext.getSession(((XMLRoot)object).getObject()); if(session != null){ xmlDescriptor = getDescriptor(((XMLRoot)object).getObject(), session); if (!(isXMLRoot && ((XMLRoot)object).getObject() instanceof Node) && ((session == null) || !xmlContext.getDocumentPreservationPolicy(session).shouldPreserveDocument())) { marshal(object, writerRecord, session, xmlDescriptor, isXMLRoot); } else { Node xmlDocument = null; if(isXMLRoot && session == null) { xmlDocument = (Node)((XMLRoot)object).getObject(); } else { xmlDocument = objectToXMLNode(object, session, xmlDescriptor, isXMLRoot);
private void writeSimpleValue(XMLField xmlRootField, Object element, Object originalObject, DOMRecord record, org.w3c.dom.Document doc, Node root, boolean wasXMLRoot, AbstractSession session) { if (wasXMLRoot) { if (((XMLRoot) originalObject).getNamespaceURI() != null) { String prefix = record.getNamespaceResolver().resolveNamespaceURI(((XMLRoot) originalObject).getNamespaceURI()); if ((prefix == null) || prefix.length() == 0) { xmlRootField.getXPathFragment().setGeneratedPrefix(true); prefix = record.getNamespaceResolver().generatePrefix(); } xmlRootField.getXPathFragment().setXPath(prefix + XMLConstants.COLON + ((XMLRoot) originalObject).getLocalName()); } } if (xmlRootField != null) { xmlRootField.setNamespaceResolver(record.getNamespaceResolver()); QName qname = ((XMLRoot) originalObject).getSchemaType(); if(qname != null){ if(!qname.equals(XMLConstants.STRING_QNAME)){ xmlRootField.setSchemaType(qname); xmlRootField.setIsTypedTextField(true); xmlRootField.addJavaConversion(((XMLRoot) originalObject).getObject().getClass(), qname); } } Node newNode = XPathEngine.getInstance().create(xmlRootField, root, element, session); } else { Text textNode = doc.createTextNode((String) element); root.appendChild(textNode); } }
marshalRecord.setLeafElementType(descriptor.getDefaultRootElementType()); } else { if (root.getEncoding() != null) { encoding = root.getEncoding(); if (root.getXMLVersion() != null) { version = root.getXMLVersion(); if(root.getObject() instanceof Node) { marshalRecord.node((Node)root.getObject(), new NamespaceResolver()); marshalRecord.endDocument(); return; String noNsSchemaLocation = getNoNamespaceSchemaLocation(); if (isXMLRoot) { object = root.getObject(); if (root.getSchemaLocation() != null) { schemaLocation = root.getSchemaLocation(); if (root.getNoNamespaceSchemaLocation() != null) { noNsSchemaLocation = root.getNoNamespaceSchemaLocation(); marshalRecord.setLeafElementType(root.getSchemaType()); String value = (String) XMLConversionManager.getDefaultXMLManager().convertObject(object, String.class, root.getSchemaType()); marshalRecord.characters(value);
/** * Validate the given object. * @param object A single object to validate * @return true if this is a valid object, otherwise false */ public boolean validate(Object object) throws XMLMarshalException { if (object == null) { throw XMLMarshalException.nullArgumentException(); } try { // Create a new XML Record using the object's class name (not fully qualified) as the root String name = ((XMLDescriptor)xmlContext.getSession(object).getDescriptor(object)).getDefaultRootElement(); if (name == null) { String qualifiedName = object.getClass().getName(); int idx = qualifiedName.lastIndexOf('.'); name = qualifiedName.substring(idx + 1); } XMLDescriptor descriptor = marshaller.getDescriptor(object); XMLRoot root = new XMLRoot(); root.setObject(object); root.setLocalName(name); XMLPlatform xmlPlatform = XMLPlatformFactory.getInstance().getXMLPlatform(); Document doc = xmlPlatform.createDocument(); marshaller.marshal(root, doc); return xmlPlatform.validate(doc.getDocumentElement(), descriptor, getErrorHandler()); } catch (XMLPlatformException e) { throw XMLMarshalException.validateException(e); } }
/** * INTERNAL * @since 2.5.0 */ @Override public XMLRoot createRoot() { return new XMLRoot(); }
xmlRootField = new XMLField(); XPathFragment frag = new XPathFragment(); if ((((XMLRoot) element)).getRootFragment().getNamespaceURI() != null) { frag.setNamespaceURI(((XMLRoot) element).getNamespaceURI()); } else { frag.setXPath(((XMLRoot) element).getLocalName()); element = ((XMLRoot) element).getObject(); if (((XMLRoot) originalObject).getRootFragment().getNamespaceURI() != null) { String prefix = referenceDescriptor.getNonNullNamespaceResolver().resolveNamespaceURI(((XMLRoot) originalObject).getNamespaceURI()); if ((prefix == null) || prefix.length() == 0) { prefix = record.getNamespaceResolver().resolveNamespaceURI(((XMLRoot) originalObject).getRootFragment().getNamespaceURI()); prefix = record.getNamespaceResolver().generatePrefix(); xmlRootField.getXPathFragment().setXPath(prefix + XMLConstants.COLON + ((XMLRoot) originalObject).getLocalName());
private void writeSimpleValue(XMLField xmlRootField, Object element, Object originalObject, DOMRecord record, org.w3c.dom.Document doc, Node root, boolean wasXMLRoot, AbstractSession session) { if (wasXMLRoot) { if (((XMLRoot) originalObject).getRootFragment().getNamespaceURI() != null) { String prefix = record.getNamespaceResolver().resolveNamespaceURI(((XMLRoot) originalObject).getRootFragment().getNamespaceURI()); if ((prefix == null) || prefix.length() == 0) { xmlRootField.getXPathFragment().setGeneratedPrefix(true); prefix = record.getNamespaceResolver().generatePrefix(); } xmlRootField.getXPathFragment().setXPath(prefix + XMLConstants.COLON + ((XMLRoot) originalObject).getLocalName()); } } if (xmlRootField != null) { xmlRootField.setNamespaceResolver(record.getNamespaceResolver()); QName qname = ((XMLRoot) originalObject).getSchemaType(); if(qname != null){ if(!qname.equals(XMLConstants.STRING_QNAME)){ xmlRootField.setSchemaType(qname); xmlRootField.setIsTypedTextField(true); xmlRootField.addJavaConversion(((XMLRoot) originalObject).getObject().getClass(), qname); } } Node newNode = XPathEngine.getInstance().create(xmlRootField, root, element, session); } else { Text textNode = doc.createTextNode((String) element); root.appendChild(textNode); } }
private void writeSimpleValue(XMLField xmlRootField, DOMRecord row, AbstractSession session, Object originalObject, Object value, Node root, Node toReplace, boolean wasXMLRoot) { org.w3c.dom.Document doc = row.getDocument(); if (wasXMLRoot) { if (((XMLRoot) originalObject).getNamespaceURI() != null) { String prefix = row.getNamespaceResolver().resolveNamespaceURI(((XMLRoot) originalObject).getNamespaceURI()); if ((prefix == null) || prefix.length() == 0) { xmlRootField.getXPathFragment().setGeneratedPrefix(true); prefix = row.getNamespaceResolver().generatePrefix(); } xmlRootField.getXPathFragment().setXPath(prefix + XMLConstants.COLON + ((XMLRoot) originalObject).getLocalName()); } } if (null == xmlRootField) { Text textNode = doc.createTextNode((String) value); if (toReplace != null) { root.replaceChild(textNode, toReplace); } else { root.appendChild(textNode); } } else { QName qname = ((XMLRoot) originalObject).getSchemaType(); if(qname != null && !qname.equals(XMLConstants.STRING_QNAME)){ xmlRootField.setSchemaType(qname); xmlRootField.setIsTypedTextField(true); xmlRootField.addJavaConversion(value.getClass(), qname); } Node newNode = XPathEngine.getInstance().create(xmlRootField, root, value, session); } }
private Namespace setupFragment(XMLRoot originalValue, XPathFragment xmlRootFragment, MarshalRecord marshalRecord) { Namespace generatedNamespace = null; String xpath = originalValue.getLocalName(); if (originalValue.getNamespaceURI() != null) { xmlRootFragment.setNamespaceURI((originalValue).getNamespaceURI()); String prefix = marshalRecord.getNamespaceResolver().resolveNamespaceURI((originalValue).getNamespaceURI()); if (prefix == null || prefix.length() == 0) { prefix = marshalRecord.getNamespaceResolver().generatePrefix("ns0"); generatedNamespace = new Namespace(prefix, xmlRootFragment.getNamespaceURI()); } xpath = prefix + XMLConstants.COLON + xpath; } xmlRootFragment.setXPath(xpath); return generatedNamespace; }
private XPathFragment buildRootFragment(Object object, XMLDescriptor descriptor, boolean isXMLRoot, MarshalRecord marshalRecord) { XPathFragment rootFragment = null; if (isXMLRoot) { rootFragment = ((XMLRoot) object).getRootFragment(); String xmlRootUri = ((XMLRoot) object).getNamespaceURI(); String xmlRootLocalName = ((XMLRoot) object).getLocalName(); if (xmlRootUri != null) { if (descriptor != null) {
private void writeSimpleValue(XMLField xmlRootField, DOMRecord row, AbstractSession session, Object originalObject, Object value, Node root, Node toReplace, boolean wasXMLRoot) { org.w3c.dom.Document doc = row.getDocument(); if (wasXMLRoot) { if (((XMLRoot) originalObject).getRootFragment().getNamespaceURI() != null) { String prefix = row.getNamespaceResolver().resolveNamespaceURI(((XMLRoot) originalObject).getRootFragment().getNamespaceURI()); if ((prefix == null) || prefix.length() == 0) { xmlRootField.getXPathFragment().setGeneratedPrefix(true); prefix = row.getNamespaceResolver().generatePrefix(); } xmlRootField.getXPathFragment().setXPath(prefix + XMLConstants.COLON + ((XMLRoot) originalObject).getLocalName()); } } if (null == xmlRootField) { Text textNode = doc.createTextNode((String) value); if (toReplace != null) { root.replaceChild(textNode, toReplace); } else { root.appendChild(textNode); } } else { QName qname = ((XMLRoot) originalObject).getSchemaType(); if(qname != null && !qname.equals(XMLConstants.STRING_QNAME)){ xmlRootField.setSchemaType(qname); xmlRootField.setIsTypedTextField(true); xmlRootField.addJavaConversion(value.getClass(), qname); } Node newNode = XPathEngine.getInstance().create(xmlRootField, root, value, session); } }