private void ensureNamespaceDeclared()

in components/core-streams/src/main/java/org/apache/axiom/core/stream/NamespaceRepairingFilterHandler.java [52:79]


    private void ensureNamespaceDeclared(String prefix, String namespaceURI)
            throws StreamException {
        if (prefix.equals(XMLConstants.XML_NS_PREFIX)
                && namespaceURI.equals(XMLConstants.XML_NS_URI)) {
            return;
        }
        boolean prefixFound = false;
        for (int i = (bindings - 1) * 2; i >= 0; i -= 2) {
            if (prefix.equals(namespaceStack[i])) {
                if (namespaceURI.equals(namespaceStack[i + 1])) {
                    return;
                } else {
                    prefixFound = true;
                    break;
                }
            }
        }
        if (!prefixFound && parentNamespaceContext != null) {
            if (!parentNamespaceContext.isBound(prefix, namespaceURI)) {
                super.processNamespaceDeclaration(prefix, namespaceURI);
            }
            // Always call setPrefix even if the namespace is bound, so that we cache the lookup
            setPrefix(prefix, namespaceURI);
        } else if (prefixFound || !prefix.isEmpty() || !namespaceURI.isEmpty()) {
            super.processNamespaceDeclaration(prefix, namespaceURI);
            setPrefix(prefix, namespaceURI);
        }
    }