KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > schema > SecurityElementConverter


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.geronimo.schema;
18
19 import javax.xml.namespace.QName JavaDoc;
20
21 import org.apache.xmlbeans.XmlCursor;
22
23 /**
24  * @version $Rev: 476049 $ $Date: 2006-11-16 23:35:17 -0500 (Thu, 16 Nov 2006) $
25  */

26 public class SecurityElementConverter implements ElementConverter {
27
28     public static final String JavaDoc GERONIMO_SECURITY_NAMESPACE = "http://geronimo.apache.org/xml/ns/security-1.2";
29     private static final QName JavaDoc PRINCIPAL_QNAME = new QName JavaDoc(GERONIMO_SECURITY_NAMESPACE, "principal");
30     private static final QName JavaDoc REALM_NAME_QNAME = new QName JavaDoc("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 JavaDoc(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 JavaDoc 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