QNameRule.java

00001 
00026 package org.objectweb.jonas_lib.deployment.rules;
00027 
00028 import java.util.StringTokenizer;
00029 
00030 import javax.xml.namespace.QName;
00031 
00032 import org.apache.commons.digester.Rule;
00033 
00034 import org.objectweb.jonas_lib.deployment.xml.Qname;
00035 
00040 public class QNameRule extends Rule {
00041 
00042 
00056     public void body(String namespace, String name, String text) {
00057 
00058         // Check that there the value of the element is not null
00059         if (text == null) {
00060             throw new IllegalArgumentException("No QName found in the body of the tag " + name);
00061         }
00062 
00063         // Extract prefix and localpart
00064         StringTokenizer st = new StringTokenizer(text, ":");
00065         if (st.countTokens() != 2) {
00066             throw new IllegalArgumentException("QName must be on the form prefix:localpart for element " + name);
00067         }
00068         String prefix = st.nextToken();
00069         String localPart = st.nextToken();
00070 
00071         // Get namespaceURI from prefix
00072         String namespaceURI = digester.findNamespaceURI(prefix);
00073         if (namespaceURI == null) {
00074             throw new IllegalArgumentException("No namespace found for the prefix '" + prefix + "' in element " + name);
00075         }
00076 
00077         // Build QName
00078         QName qName = new QName(namespaceURI, localPart, prefix);
00079 
00080         // Add this QName to the element at the top of the stack
00081         Qname qNameObject = (Qname) digester.peek();
00082         qNameObject.setName(name);
00083         qNameObject.setQName(qName);
00084 
00085     }
00086 }

Generated on Tue Feb 15 15:05:50 2005 for JOnAS by  doxygen 1.3.9.1