private String generatePrefix(String uri) { NamespaceResolver nr = getNamespaceResolver(); if (uri.equals(SDOConstants.SDO_URL)) { return nr.generatePrefix("sdo"); } else if (uri.equals(SDOConstants.SDOXML_URL)) { return nr.generatePrefix("sdoXML"); } else if (uri.equals(SDOConstants.SDOJAVA_URL)) { return nr.generatePrefix("sdoJava"); } else { return nr.generatePrefix(); } }
private String generatePrefix(String uri) { NamespaceResolver nr = getNamespaceResolver(); if (uri.equals(SDOConstants.SDO_URL)) { return nr.generatePrefix("sdo"); } else if (uri.equals(SDOConstants.SDOXML_URL)) { return nr.generatePrefix("sdoXML"); } else if (uri.equals(SDOConstants.SDOJAVA_URL)) { return nr.generatePrefix("sdoJava"); } else { return nr.generatePrefix(); } }
public String generatePrefix() { return generatePrefix(getNextPrefix()); }
private String getNamespacePrefixForDescriptorNamespaceResolver(String namespace, NamespaceResolver contextResolver) { String prefix = contextResolver.resolveNamespaceURI(namespace); while (prefix == null || namespaceResolverForDescriptor.hasPrefix(prefix)) { prefix = contextResolver.generatePrefix(); } return prefix; } }
/** * Return the schema type as a string for a given QName and Schema. The schema's * namespace resolver will be used to determine the prefix (if any) to use. * * @param schemaType * @param workingSchema * @return */ protected String getSchemaTypeString(QName schemaType, Schema workingSchema) { String schemaTypeString = schemaType.getLocalPart(); String uri = schemaType.getNamespaceURI(); String prefix = workingSchema.getNamespaceResolver().resolveNamespaceURI(uri); if (prefix == null && !areNamespacesEqual(uri, workingSchema.getDefaultNamespace())) { if (uri.equals(XMLConstants.SCHEMA_URL)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_PREFIX); } else if (uri.equals(XMLConstants.SCHEMA_INSTANCE_URL)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_INSTANCE_PREFIX); } else if (uri.equals(XMLConstants.REF_URL)) { prefix = workingSchema.getNamespaceResolver().generatePrefix(XMLConstants.REF_PREFIX); } else { prefix = workingSchema.getNamespaceResolver().generatePrefix(); } workingSchema.getNamespaceResolver().put(prefix, uri); } if (prefix != null) { schemaTypeString = prefix + XMLConstants.COLON + schemaTypeString; } return schemaTypeString; }
prefix = marshalRecord.getNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_PREFIX); }else{ prefix = marshalRecord.getNamespaceResolver().generatePrefix();
private void addXsiNilToElement(Element element, Field xmlField) { NamespaceResolver nsr = new NamespaceResolver(); nsr.setDOM(element); String schemaInstancePrefix = resolveNamespacePrefixForURI(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, nsr); Node parentNode = element.getParentNode(); while(schemaInstancePrefix == null && parentNode != null && parentNode.getNodeType() == Node.ELEMENT_NODE){ nsr.setDOM(element); schemaInstancePrefix = resolveNamespacePrefixForURI(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, nsr); parentNode = parentNode.getParentNode(); } if(schemaInstancePrefix == null && element.getOwnerDocument() != null){ nsr.setDOM(element.getOwnerDocument().getDocumentElement()); schemaInstancePrefix = resolveNamespacePrefixForURI(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, nsr); } if(schemaInstancePrefix == null) { //Not decalred in the doc nsr = getNamespaceResolverForField(xmlField); schemaInstancePrefix = nsr.resolveNamespaceURI(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); if(schemaInstancePrefix == null) { schemaInstancePrefix = nsr.generatePrefix(Constants.SCHEMA_INSTANCE_PREFIX); } element.setAttributeNS(javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI, javax.xml.XMLConstants.XMLNS_ATTRIBUTE + Constants.COLON + schemaInstancePrefix, javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); } element.setAttributeNS(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, Constants.SCHEMA_INSTANCE_PREFIX + Constants.COLON + Constants.SCHEMA_NIL_ATTRIBUTE, Constants.BOOLEAN_STRING_TRUE); } }
/** * INTERNAL: * Private function to process or create an entry in the NamespaceResolver for the xsi prefix. * @param namespaceResolver * @return xsi prefix */ protected String processNamespaceResolverForXSIPrefix(NamespaceResolver namespaceResolver) { String xsiPrefix; if (null == namespaceResolver) { // add new xsi entry into the properties map xsiPrefix = XMLConstants.SCHEMA_INSTANCE_PREFIX; namespaceResolver = new NamespaceResolver(); namespaceResolver.put(xsiPrefix, XMLConstants.SCHEMA_INSTANCE_URL); } else { // find an existing xsi entry in the map xsiPrefix = namespaceResolver.resolveNamespaceURI(XMLConstants.SCHEMA_INSTANCE_URL); if (null == xsiPrefix) { xsiPrefix = namespaceResolver.generatePrefix(); } } return xsiPrefix; }
/** * Attempt to resolve the given URI to a prefix. If this is unsuccessful, one * will be generated and added to the resolver. * * @param URI * @param schema * @return */ public String getOrGeneratePrefixForNamespace(String URI, Schema schema) { String prefix = schema.getNamespaceResolver().resolveNamespaceURI(URI); if (prefix == null) { if (URI.equals(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI)) { prefix = schema.getNamespaceResolver().generatePrefix(Constants.SCHEMA_PREFIX); } else if (URI.equals(Constants.REF_URL)) { prefix = schema.getNamespaceResolver().generatePrefix(Constants.REF_PREFIX); if(!importExists(schema, SWA_REF_IMPORT)){ Import schemaImport = new Import(); schemaImport.setSchemaLocation(SWA_REF_IMPORT); schemaImport.setNamespace(URI); schema.getImports().add(schemaImport); } } else { prefix = schema.getNamespaceResolver().generatePrefix(); } schema.getNamespaceResolver().put(prefix, URI); } return prefix; }
protected void addTypeAttribute(XMLDescriptor descriptor, MarshalRecord marshalRecord, String schemaContext) { String typeValue = schemaContext.substring(1); String xsiPrefix = null; if (descriptor.getNamespaceResolver() != null) { xsiPrefix = descriptor.getNamespaceResolver().resolveNamespaceURI(XMLConstants.SCHEMA_INSTANCE_URL); } else { xsiPrefix = XMLConstants.SCHEMA_INSTANCE_PREFIX; marshalRecord.attribute(XMLConstants.XMLNS_URL, xsiPrefix, XMLConstants.XMLNS + XMLConstants.COLON + xsiPrefix, XMLConstants.SCHEMA_INSTANCE_URL); } if (xsiPrefix == null) { xsiPrefix = descriptor.getNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_INSTANCE_PREFIX); marshalRecord.attribute(XMLConstants.XMLNS_URL, xsiPrefix, XMLConstants.XMLNS + XMLConstants.COLON + xsiPrefix, XMLConstants.SCHEMA_INSTANCE_URL); } marshalRecord.attribute(XMLConstants.SCHEMA_INSTANCE_URL, XMLConstants.SCHEMA_TYPE_ATTRIBUTE, xsiPrefix + XMLConstants.COLON + XMLConstants.SCHEMA_TYPE_ATTRIBUTE, typeValue); }
/** * Create and return a SimpleType for a given XMLDescriptor. * * @param desc * @param workingSchema * @return */ protected SimpleType buildSimpleType(Descriptor desc, Schema workingSchema, boolean global) { SimpleType st; if (global) { st = buildNewSimpleType(desc.getSchemaReference().getSchemaContextAsQName(workingSchema.getNamespaceResolver()).getLocalPart()); } else { st = new SimpleType(); } CoreMapping mapping = (CoreMapping)desc.getMappings().get(0); QName qname = conversionManager.schemaType(mapping.getAttributeClassification()); String baseType = qname.getLocalPart(); if (qname.getNamespaceURI() != null) { String prefix = workingSchema.getNamespaceResolver().resolveNamespaceURI(qname.getNamespaceURI()); if (prefix == null) { prefix = workingSchema.getNamespaceResolver().generatePrefix(); workingSchema.getNamespaceResolver().put(prefix, qname.getNamespaceURI()); } baseType = prefix + Constants.COLON + baseType; } Restriction restriction = new Restriction(); restriction.setBaseType(baseType); st.setRestriction(restriction); return st; }
protected void addTypeAttribute(MarshalRecord marshalRecord, String typeValue) { String xsiPrefix = null; if (marshalRecord.getNamespaceResolver() != null) { xsiPrefix = marshalRecord.getNamespaceResolver().resolveNamespaceURI(XMLConstants.SCHEMA_INSTANCE_URL); } else { xsiPrefix = XMLConstants.SCHEMA_INSTANCE_PREFIX; marshalRecord.attribute(XMLConstants.XMLNS_URL, xsiPrefix, XMLConstants.XMLNS + XMLConstants.COLON + xsiPrefix, XMLConstants.SCHEMA_INSTANCE_URL); } if (xsiPrefix == null) { xsiPrefix = marshalRecord.getNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_INSTANCE_PREFIX); marshalRecord.attribute(XMLConstants.XMLNS_URL, xsiPrefix, XMLConstants.XMLNS + XMLConstants.COLON + xsiPrefix, XMLConstants.SCHEMA_INSTANCE_URL); } marshalRecord.attribute(XMLConstants.SCHEMA_INSTANCE_URL, XMLConstants.SCHEMA_TYPE_ATTRIBUTE, xsiPrefix + XMLConstants.COLON + XMLConstants.SCHEMA_TYPE_ATTRIBUTE, typeValue); }
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(); generatedNamespace = new Namespace(prefix, xmlRootFragment.getNamespaceURI()); } xpath = prefix + XMLConstants.COLON + xpath; } xmlRootFragment.setXPath(xpath); return generatedNamespace; }
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 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); } }
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 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 writeXsiTypeAttribute(XMLDescriptor xmlDescriptor, DOMRecord row, String typeValue) { String xsiPrefix = null; boolean generated = false; xsiPrefix = row.getNamespaceResolver().resolveNamespaceURI(XMLConstants.SCHEMA_INSTANCE_URL); if (xsiPrefix == null) { xsiPrefix = xmlDescriptor.getNonNullNamespaceResolver().generatePrefix(XMLConstants.SCHEMA_INSTANCE_PREFIX); generated = true; writeXsiNamespace(row, xsiPrefix); } XMLField xmlField = (XMLField)xmlDescriptor.buildField(XMLConstants.ATTRIBUTE + xsiPrefix + XMLConstants.COLON + XMLConstants.SCHEMA_TYPE_ATTRIBUTE); if (generated) { xmlField.getLastXPathFragment().setGeneratedPrefix(true); } xmlField.getLastXPathFragment().setNamespaceURI(XMLConstants.SCHEMA_INSTANCE_URL); row.add(xmlField, typeValue); }
private void marshalNilAttribute(SDOProperty property, DOMRecord row) { //Marshal out xsi:nil=true NamespaceResolver resolver = null; if(property.getContainingType() != null) { resolver = property.getContainingType().getXmlDescriptor().getNamespaceResolver(); } if(null == resolver) { resolver = typeHelper.getNamespaceResolver(); } String xsiPrefix = resolver.resolveNamespaceURI(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); if ((xsiPrefix == null) || xsiPrefix.equals(SDOConstants.EMPTY_STRING)) { NamespaceResolver nsResolverWithXsi = new NamespaceResolver(); copyNamespaces(resolver, nsResolverWithXsi); resolver = nsResolverWithXsi; xsiPrefix = resolver.generatePrefix(XMLConstants.SCHEMA_INSTANCE_PREFIX); resolver.put(xsiPrefix, javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); } String xPath = getXPathForProperty(property, true, resolver); xPath = xPath + "/@" + xsiPrefix + XMLConstants.COLON + XMLConstants.SCHEMA_NIL_ATTRIBUTE; XMLField field = new XMLField(xPath); field.setNamespaceResolver(resolver); row.put(field, XMLConstants.BOOLEAN_STRING_TRUE); }
private void marshalNilAttribute(SDOProperty property, DOMRecord row) { //Marshal out xsi:nil=true NamespaceResolver resolver = null; if(property.getContainingType() != null) { resolver = property.getContainingType().getXmlDescriptor().getNamespaceResolver(); } if(null == resolver) { resolver = typeHelper.getNamespaceResolver(); } String xsiPrefix = resolver.resolveNamespaceURI(javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); if ((xsiPrefix == null) || xsiPrefix.equals(SDOConstants.EMPTY_STRING)) { NamespaceResolver nsResolverWithXsi = new NamespaceResolver(); copyNamespaces(resolver, nsResolverWithXsi); resolver = nsResolverWithXsi; xsiPrefix = resolver.generatePrefix(XMLConstants.SCHEMA_INSTANCE_PREFIX); resolver.put(xsiPrefix, javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI); } String xPath = getXPathForProperty(property, true, resolver); xPath = xPath + "/@" + xsiPrefix + XMLConstants.COLON + XMLConstants.SCHEMA_NIL_ATTRIBUTE; XMLField field = new XMLField(xPath); field.setNamespaceResolver(resolver); row.put(field, XMLConstants.BOOLEAN_STRING_TRUE); }