private String registerNamespace(String ns) { String prefix = namespaceRegistry.getPrefix(ns); if (prefix != null) return prefix; // XML Namespace MUST ALWAYS BE the "xml" prefix if (Constants.NS_XML.equals(ns)) prefix = Constants.PREFIX_XML; return namespaceRegistry.registerURI(ns, prefix); }
/** * If there is a type being used from a different namespace, a custom * prefix will be needed * @param nsuri * @return New Prefix */ public String allocatePrefix(String nsURI) { String prefix = namespaces.getPrefix(nsURI); return (prefix == null) ? namespaces.registerURI(nsURI, null) : prefix; }
/** Register a QName and return a QName that is guarantied to have a prefix */ public QName registerQName(QName qname) { if (qname == null) return null; String nsURI = qname.getNamespaceURI(); String prefix = getPrefix(nsURI); if (prefix == null) { prefix = qname.getPrefix(); if (prefix.length() == 0) prefix = registerURI(nsURI, null); else prefix = registerURI(nsURI, prefix); } qname = new QName(nsURI, qname.getLocalPart(), prefix); return qname; }
/** Unwrap the value string from the XML fragment * @return The value string or null if the startTag contains a xsi:nil='true' attribute */ private void updateNamespaceRegistry(Element xmlFragment, NamespaceRegistry nsRegistry) { NamedNodeMap attribs = xmlFragment.getAttributes(); for (int i = 0; i < attribs.getLength(); i++) { Node attr = attribs.item(i); String nodeName = attr.getNodeName(); if (nodeName.startsWith("xmlns:")) { String prefix = nodeName.substring(6); String nsURI = attr.getNodeValue(); nsRegistry.registerURI(nsURI, prefix); } } } }
/** Register the given namespaceURI/prefix combination */ public String registerNamespaceURI(String nsURI, String prefix) { if (Constants.NS_XML.equalsIgnoreCase(nsURI)) { //"http://www.w3.org/XML/1998/namespace" is always bound to "xml" prefix //and does not need to be registered. return Constants.PREFIX_XML; } else if (Constants.PREFIX_XML.equalsIgnoreCase(prefix)) { throw MESSAGES.prefixCannotBeBoundTryingBindingTo(Constants.PREFIX_XML, nsURI); } String pre = namespaces.getPrefix(nsURI); if (pre == null || 0 == pre.length()) { pre = namespaces.registerURI(nsURI, prefix); log.trace("registerNamespaceURI: " + pre + '=' + nsURI); } return pre; }
/** * Serializes an object null value. * * If a message part of an RPC parameter is defined like this * * <message name='SomeMessage'> * <part name='partName' element='someElement'/> * </message> * * it is possible that the element definition does not allow * null values. In that case an error should be generated. */ public Result serialize(QName xmlName, QName xmlType, Object value, SerializationContext serContext, NamedNodeMap attributes) throws BindingException { log.debug("serialize: [xmlName=" + xmlName + ",xmlType=" + xmlType + "]"); NamespaceRegistry nsRegistry = serContext.getNamespaceRegistry(); nsRegistry.registerURI(Constants.NS_SCHEMA_XSI, Constants.PREFIX_XSI); String xmlFragment = wrapValueStr(xmlName, null, nsRegistry, null, attributes, true); return new BufferedStreamResult(xmlFragment); } }
public void merge(JBossXSModel xsm) { JBossXSNamespaceItemList jxsm = (JBossXSNamespaceItemList)xsm.getNamespaceItems(); int len = jxsm.getLength(); for (int i = 0; i < len; i++) { JBossXSNamespaceItem ni = (JBossXSNamespaceItem)jxsm.item(i); String sns = ni.getSchemaNamespace(); JBossXSNamespaceItem mynsi = nsimap.get(sns); if (mynsi != null) mynsi.merge(ni); else { //add the namespaceitem nsimap.put(sns, ni); ni.setNamespaceRegistry(namespaceRegistry); } } NamespaceRegistry xsmRegistry = xsm.getNamespaceRegistry(); Iterator iter = xsmRegistry.getRegisteredPrefixes(); while (iter.hasNext()) { String prefix = (String)iter.next(); String ns = xsmRegistry.getNamespaceURI(prefix); this.namespaceRegistry.registerURI(ns, prefix); } anonymousMapper.rebuild(); }