public Iterator getPrefixes()

in components/core-streams/src/main/java/org/apache/axiom/core/stream/stax/pull/output/StAXPivot.java [81:132]


        public Iterator<String> getPrefixes(final String namespaceURI) {
            if (namespaceURI == null) {
                throw new IllegalArgumentException("namespaceURI can't be null");
            } else if (namespaceURI.equals(XMLConstants.XML_NS_URI)) {
                return Collections.singleton(XMLConstants.XML_NS_PREFIX).iterator();
            } else if (namespaceURI.equals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI)) {
                return Collections.singleton(XMLConstants.XMLNS_ATTRIBUTE).iterator();
            } else {
                final int bindings = getNamespaceBindingsCount();
                return new Iterator<String>() {
                    private int binding = bindings;
                    private String next;

                    @Override
                    public boolean hasNext() {
                        if (next == null) {
                            outer:
                            while (--binding >= 0) {
                                if (namespaceURI.equals(namespaceStack[binding * 2 + 1])) {
                                    String prefix = namespaceStack[binding * 2];
                                    // Now check that the prefix is not masked
                                    for (int j = binding + 1; j < bindings; j++) {
                                        if (prefix.equals(namespaceStack[j * 2])) {
                                            continue outer;
                                        }
                                    }
                                    next = prefix;
                                    break;
                                }
                            }
                        }
                        return next != null;
                    }

                    @Override
                    public String next() {
                        if (hasNext()) {
                            String result = next;
                            next = null;
                            return result;
                        } else {
                            throw new NoSuchElementException();
                        }
                    }

                    @Override
                    public void remove() {
                        throw new UnsupportedOperationException();
                    }
                };
            }
        }