public void convertElement(XmlCursor cursor,
XmlCursor end) {
cursor.push();
end.toCursor(cursor);
end.toEndToken();
while (cursor.hasNextToken() && cursor.isLeftOf(end)) {
if (cursor.isStart()) {
if (GERONIMO_SECURITY_NAMESPACE.equals(cursor.getName().getNamespaceURI())) {
break;
}
cursor.setName(new QName(GERONIMO_SECURITY_NAMESPACE, cursor.getName().getLocalPart()));
}
cursor.toNextToken();
}
cursor.pop();
XmlCursor source = null;
try {
while (cursor.hasNextToken() && cursor.isLeftOf(end)) {
if (cursor.isStart()) {
String localPart = cursor.getName().getLocalPart();
if (localPart.equals("realm")) {
if (source == null) {
source = cursor.newCursor();
} else {
source.toCursor(cursor);
}
cursor.push();
cursor.toEndToken();
cursor.toNextToken();
if (source.toChild(PRINCIPAL_QNAME)) {
do {
source.removeAttribute(DESIGNATED_RUN_AS);
source.copyXml(cursor);
} while (source.toNextSibling(PRINCIPAL_QNAME));
}
cursor.pop();
cursor.removeXml();
} else if (localPart.equals("default-subject")) {
// cursor.removeAttribute(REALM_NAME_QNAME);
cursor.toEndToken();
} else if (localPart.equals("default-principal")) {
cursor.removeXml();
} else if (localPart.equals("principal")) {
cursor.removeAttribute(DESIGNATED_RUN_AS);
} else if (localPart.equals("run-as-subject")) {
cursor.toEndToken();
}
}
cursor.toNextToken();
}
} finally {
if (source != null) {
source.dispose();
}
}
}
|