in src/main/java/org/apache/neethi/Policy.java [123:209]
public void serialize(XMLStreamWriter writer) throws XMLStreamException {
String nspace = namespace;
if (namespace == null) {
nspace = Constants.findPolicyNamespace(writer);
}
String wspPrefix = writer.getPrefix(nspace);
if (wspPrefix == null) {
wspPrefix = Constants.ATTR_WSP;
writer.setPrefix(wspPrefix, nspace);
}
String wsuPrefix = writer.getPrefix(Constants.URI_WSU_NS);
if (wsuPrefix == null) {
wsuPrefix = Constants.ATTR_WSU;
writer.setPrefix(wsuPrefix, Constants.URI_WSU_NS);
}
writer.writeStartElement(wspPrefix, Constants.ELEM_POLICY,
nspace);
QName key;
String prefix = null;
String namespaceURI = null;
String localName = null;
Map<String, String> prefix2ns = new HashMap<String, String>();
boolean writeNS = true;
for (Map.Entry<QName, String> ents : attributes.entrySet()) {
key = ents.getKey();
localName = key.getLocalPart();
namespaceURI = key.getNamespaceURI();
namespaceURI = (namespaceURI == null || namespaceURI.length() == 0) ? null : namespaceURI;
if (namespaceURI != null && XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
writer.writeNamespace(localName, ents.getValue());
if (nspace.equals(ents.getValue())) {
writeNS = false;
}
} else if (namespaceURI != null) {
String writerPrefix = writer.getPrefix(namespaceURI);
writerPrefix = (writerPrefix == null || writerPrefix.length() == 0) ? null : writerPrefix;
if (writerPrefix == null) {
prefix = key.getPrefix();
prefix = (prefix == null || prefix.length() == 0) ? null : prefix;
} else {
prefix = writerPrefix;
}
if (prefix != null) {
writer.writeAttribute(prefix, namespaceURI, localName, ents.getValue());
prefix2ns.put(prefix, key.getNamespaceURI());
} else {
writer.writeAttribute(namespaceURI, localName, ents.getValue());
}
} else {
writer.writeAttribute(localName, getAttribute(key));
}
}
if (writeNS) {
// writes xmlns:wsp=".."
writer.writeNamespace(wspPrefix, nspace);
}
for (String pfx :prefix2ns.keySet()) {
writer.writeNamespace(pfx, prefix2ns.get(pfx));
}
for (PolicyComponent policyComponent : getPolicyComponents()) {
policyComponent.serialize(writer);
}
writer.writeEndElement();
}