private SingletonMap moveNsDeclaration(BpelEntity entity, Attr attr) throws InvalidNamespaceException { String namespaceURI = attr.getValue(); ExNamespaceContext context = entity.getNamespaceContext(); /* * Fantom addition of namespace. This call will not do anything, * it just check correcttness of namespaceURI. If it bad then * InvalidNamespaceException will appear and we go to catch. */ context.addNamespace(namespaceURI); // here we remove namespace declararation ((BpelEntityImpl) entity) .setAttribute(attr.getName(), new PrefixAttribute(attr.getName()), null); String localName = attr.getLocalName(); Iterator<String> iterator = context.getPrefixes(); boolean usePrefix = true; while (iterator.hasNext() && localName != null) { String prefix = iterator.next(); if (localName.equals(prefix)) { usePrefix = false; } } String prefix = null; if (XMLNS.equals(attr.getName()) || localName == null || !usePrefix) { prefix = context.addNamespace(attr.getValue()); } else { prefix = localName; context.addNamespace(localName, attr.getValue()); } return new SingletonMap(localName, prefix); }
private void handleNsAttribute( BpelEntity entity, BpelEntity parent, Map<String, String> prefixMap, Attr attr) { String namespaceURI = attr.getValue(); if (XMLNS.equals(attr.getName()) || (XMLNS.equals(attr.getPrefix()))) { if (namespaceURI.equals(entity.getPeer().getNamespaceURI())) { // do not touch namespace that correspond namespace of current element return; } ExNamespaceContext context = parent.getNamespaceContext(); Iterator<String> iterator = context.getPrefixes(); while (iterator.hasNext()) { String next = iterator.next(); String namespace = context.getNamespaceURI(next); if (namespaceURI.equals(namespace)) { String prefixName = attr.getLocalName(); // put prefix corresponding found namespace into map for changing it further if (!prefixName.equals(next)) { prefixMap.put(prefixName, next); } // remove namespace delcaration. ((BpelEntityImpl) entity) .setAttribute(attr.getName(), new PrefixAttribute(attr.getName()), null); } } } }