1 package org.codehaus.xfire.addressing;
2
3 import javax.xml.namespace.QName;
4
5 import org.codehaus.xfire.util.NamespaceHelper;
6 import org.codehaus.yom.Element;
7
8 public abstract class AbstactAddressingHeadersFactory
9 implements WSAConstants, AddressingHeadersFactory
10 {
11 protected String getChildValue(Element element, String localName, String ns)
12 {
13 Element child = element.getFirstChildElement(localName, ns);
14 if (child == null) return null;
15
16 return child.getValue();
17 }
18
19 protected static String qnameToString(Element root, QName qname)
20 {
21 String prefix = NamespaceHelper.getUniquePrefix(root, qname.getNamespaceURI());
22
23 return prefix + ":" + qname.getLocalPart();
24 }
25
26 protected static QName elementToQName(Element el)
27 {
28 String value = el.getValue();
29
30 return stringToQName(el, value);
31 }
32
33 protected static QName stringToQName(Element el, String value)
34 {
35 int colon = value.indexOf(":");
36 if (colon > -1)
37 {
38 String prefix = value.substring(0, colon);
39 String local = value.substring(colon+1);
40 String uri = el.getNamespaceURI(prefix);
41 return new QName(uri, local, prefix);
42 }
43 else
44 {
45 String uri = el.getNamespaceURI();
46 return new QName(value, uri);
47 }
48 }
49 }