annotate WebServiceExtensionsV1.1/WebServiceToolWorkflow_REST_SOAP/lib/SAWADLParser/src/edu/uga/cs/lsdis/meteors/wadls/util/xml/QNameUtils.java @ 0:049760c677de default tip

Galaxy WSExtensions added successfully
author uga-galaxy-group
date Tue, 05 Jul 2011 19:34:18 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
1 /*
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
2 * (c) Copyright IBM Corp 2002, 2005
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
3 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
4
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
5 package edu.uga.cs.lsdis.meteors.wadls.util.xml;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
6
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
7 import javax.wadls.Application;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
8 import javax.wadls.WADLSException;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
9 import javax.xml.XMLConstants;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
10 import javax.xml.namespace.*;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
11
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
12 import org.w3c.dom.*;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
13
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
14 public class QNameUtils
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
15 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
16 public static boolean matches(QName qname, Node node)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
17 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
18 return (node != null && qname.equals(newQName(node)));
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
19 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
20
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
21 public static QName newQName(Node node)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
22 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
23 if (node != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
24 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
25 // System.out.println("node:namespace uri is " + node.getNamespaceURI());
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
26 QName q = new QName(node.getNamespaceURI(), node.getLocalName());
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
27 //System.out.println("Qname generated is "+q);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
28 return q;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
29
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
30 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
31 else
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
32 {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
33 return new QName(null, null);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
34 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
35 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
36
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
37 public static QName getQName(String prefixedValue,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
38 Element contextEl)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
39 throws WADLSException{
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
40 int index = prefixedValue.indexOf(':');
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
41 String prefix = (index != -1)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
42 ? prefixedValue.substring(0, index)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
43 : null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
44 String localPart = prefixedValue.substring(index + 1);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
45 String namespaceURI = DOMUtils.getNamespaceURIFromPrefix(contextEl, prefix);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
46
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
47 if (namespaceURI != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
48 return new QName(namespaceURI, localPart);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
49 else{
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
50 String faultCode = (prefix == null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
51 ? WADLSException.NO_PREFIX_SPECIFIED
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
52 : WADLSException.UNBOUND_PREFIX;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
53
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
54 WADLSException wsdlExc = new WADLSException(faultCode,
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
55 "Unable to determine " +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
56 "namespace of '" +
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
57 prefixedValue + "'.");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
58
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
59 wsdlExc.setLocation(XPathUtils.getXPathExprFromNode(contextEl));
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
60
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
61 throw wsdlExc;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
62 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
63 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
64
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
65 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
66 * Parse a string, return a QName.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
67 * The String can be only in the form of "{namespace}localpart"
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
68 * @param qNameAsString
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
69 * @return A QName by parsing the given string.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
70 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
71 public static QName generateQName(String qNameAsString){
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
72 return generateQName(qNameAsString, null);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
73 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
74
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
75 /**
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
76 * Parse a string, return a QName.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
77 * The String may be in the form of "prefix:localpart" or "{namespace}localpart"
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
78 * @param qNameAsString
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
79 * @param wsdlDef Wsdl definition for the purpose of getting URI from prefix, and vice versa.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
80 * @return A QName by paring the given string.
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
81 */
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
82 public static QName generateQName(String qNameAsString, Application wadlApp){
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
83 String nsURI = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
84 String prefix = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
85 String localPart = null;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
86
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
87 if (qNameAsString == null) {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
88 throw new IllegalArgumentException("cannot create QName from \"null\" or \"\" String");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
89 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
90
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
91 if (qNameAsString.charAt(0) == '{') { //namespace + localpart
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
92 int endOfNamespaceURI = qNameAsString.indexOf('}');
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
93 if (endOfNamespaceURI == -1) {
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
94 throw new IllegalArgumentException(
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
95 "cannot create QName from \""
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
96 + qNameAsString
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
97 + "\", missing closing \"}\"");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
98 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
99 else{
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
100 nsURI = qNameAsString.substring(1, endOfNamespaceURI);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
101 //get prefix from wsdls definition
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
102 if (wadlApp != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
103 prefix = wadlApp.getPrefix(nsURI);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
104 localPart = qNameAsString.substring(endOfNamespaceURI + 1);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
105 return new QName(nsURI, localPart, nsURI);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
106 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
107
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
108 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
109 else{
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
110 int endOfPrefix = qNameAsString.indexOf(':'); //try prefix
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
111
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
112 if (endOfPrefix == -1){ //localpart only, use tagetNamespace from wsdls definition
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
113 if (wadlApp != null)
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
114 nsURI = wadlApp.getTargetNamespace();
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
115 else
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
116 nsURI = XMLConstants.NULL_NS_URI;
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
117 return new QName(nsURI, qNameAsString);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
118 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
119 else if (wadlApp != null){ //prefix + localpart
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
120 prefix = qNameAsString.substring(1, endOfPrefix);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
121 nsURI = wadlApp.getNamespace(prefix);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
122 localPart = qNameAsString.substring(endOfPrefix + 1);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
123 return new QName(nsURI, localPart, nsURI);
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
124 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
125 else
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
126 throw new IllegalArgumentException(
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
127 "cannot create QName from \""
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
128 + qNameAsString
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
129 + "\", no URI and no wsdl definition is given");
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
130 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
131 }
049760c677de Galaxy WSExtensions added successfully
uga-galaxy-group
parents:
diff changeset
132 }