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
00059 if (text == null) {
00060 throw new IllegalArgumentException("No QName found in the body of the tag " + name);
00061 }
00062
00063
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
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
00078 QName qName = new QName(namespaceURI, localPart, prefix);
00079
00080
00081 Qname qNameObject = (Qname) digester.peek();
00082 qNameObject.setName(name);
00083 qNameObject.setQName(qName);
00084
00085 }
00086 }