1 17 package org.apache.geronimo.schema; 18 19 import javax.xml.namespace.QName ; 20 21 import org.apache.xmlbeans.XmlCursor; 22 23 26 public class SecurityElementConverter implements ElementConverter { 27 28 public static final String GERONIMO_SECURITY_NAMESPACE = "http://geronimo.apache.org/xml/ns/security-1.2"; 29 private static final QName PRINCIPAL_QNAME = new QName (GERONIMO_SECURITY_NAMESPACE, "principal"); 30 private static final QName REALM_NAME_QNAME = new QName ("realm-name"); 31 32 public void convertElement(XmlCursor cursor, XmlCursor end) { 33 cursor.push(); 34 end.toCursor(cursor); 35 end.toEndToken(); 36 while (cursor.hasNextToken() && cursor.isLeftOf(end)) { 37 if (cursor.isStart()) { 38 if (GERONIMO_SECURITY_NAMESPACE.equals(cursor.getName().getNamespaceURI())) { 39 break; 40 } 41 cursor.setName(new QName (GERONIMO_SECURITY_NAMESPACE, cursor.getName().getLocalPart())); 42 43 } 44 cursor.toNextToken(); 45 } 46 cursor.pop(); 47 XmlCursor source = null; 48 try { 49 while (cursor.hasNextToken() && cursor.isLeftOf(end)) { 50 if (cursor.isStart()) { 51 String localPart = cursor.getName().getLocalPart(); 52 if (localPart.equals("realm")) { 53 if (source == null) { 54 source = cursor.newCursor(); 55 } else { 56 source.toCursor(cursor); 57 } 58 cursor.push(); 59 cursor.toEndToken(); 60 cursor.toNextToken(); 61 if (source.toChild(PRINCIPAL_QNAME)) { 62 do { 63 source.copyXml(cursor); 64 } while (source.toNextSibling(PRINCIPAL_QNAME)); 65 } 66 67 cursor.pop(); 68 cursor.removeXml(); 69 } else if (localPart.equals("default-principal")) { 70 cursor.removeAttribute(REALM_NAME_QNAME); 71 } 72 } 73 cursor.toNextToken(); 74 } 75 } finally { 76 if (source != null) { 77 source.dispose(); 78 } 79 } 80 } 81 } 82 | Popular Tags |