You are viewing a plain text version of this content. The canonical link for it is here.
Posted to woden-dev@ws.apache.org by jk...@apache.org on 2005/10/03 06:49:48 UTC
svn commit: r293236 - in /incubator/woden/java/src:
javax/xml/namespace/QName.java
org/apache/woden/internal/util/StringUtils.java
org/apache/woden/internal/util/dom/DOMUtils.java
org/apache/woden/internal/util/dom/QNameUtils.java
Author: jkaputin
Date: Sun Oct 2 21:49:36 2005
New Revision: 293236
URL: http://svn.apache.org/viewcvs?rev=293236&view=rev
Log:
Added some utility behaviour for handling QNames.
Modified:
incubator/woden/java/src/javax/xml/namespace/QName.java
incubator/woden/java/src/org/apache/woden/internal/util/StringUtils.java
incubator/woden/java/src/org/apache/woden/internal/util/dom/DOMUtils.java
incubator/woden/java/src/org/apache/woden/internal/util/dom/QNameUtils.java
Modified: incubator/woden/java/src/javax/xml/namespace/QName.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/javax/xml/namespace/QName.java?rev=293236&r1=293235&r2=293236&view=diff
==============================================================================
--- incubator/woden/java/src/javax/xml/namespace/QName.java (original)
+++ incubator/woden/java/src/javax/xml/namespace/QName.java Sun Oct 2 21:49:36 2005
@@ -15,7 +15,9 @@
*/
package javax.xml.namespace;
-import java.io.*;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
/**
* <code>QName</code> class represents the value of a qualified name
@@ -26,10 +28,14 @@
* The localPart provides the local part of the qualified name. The
* namespaceURI is a URI reference identifying the namespace.
*
- * Note: Some of this impl code was taken from Axis.
- *
+ * This QName class mostly copied from wsdl4j, which borrowed from Axis.
+ * Updated to reflect the QName interface defined by J2EE 1.4.
+ *
+ * TODO illegalArgEx in ctor if localpart is null or "" or if prefix is null.
+ *
* @author axis-dev
* @author Matthew J. Duftler (duftler@us.ibm.com)
+ * @author jkaputin@apache.org
*/
public class QName implements Serializable
{
@@ -41,8 +47,8 @@
// Field localPart.
private String localPart;
-
- private static final long serialVersionUID = -9120448754896609940L;
+
+ private String prefix;
/**
* Constructor for the QName.
@@ -55,6 +61,7 @@
this.localPart = (localPart == null)
? emptyString
: localPart.intern();
+ this.prefix = emptyString;
}
/**
@@ -71,6 +78,27 @@
this.localPart = (localPart == null)
? emptyString
: localPart.intern();
+ this.prefix = emptyString;
+ }
+
+ /**
+ * Constructor for the QName.
+ *
+ * @param namespaceURI Namespace URI for the QName
+ * @param localPart Local part of the QName.
+ * @param prefix Prefix for the namespace.
+ */
+ public QName(String namespaceURI, String localPart, String prefix)
+ {
+ this.namespaceURI = (namespaceURI == null)
+ ? emptyString
+ : namespaceURI.intern();
+ this.localPart = (localPart == null)
+ ? emptyString
+ : localPart.intern();
+ this.prefix = (prefix == null)
+ ? emptyString
+ : prefix.intern();;
}
/**
@@ -91,6 +119,16 @@
public String getLocalPart()
{
return localPart;
+ }
+
+ /**
+ * Gets the Prefix for this QName
+ *
+ * @return prefix
+ */
+ public String getPrefix()
+ {
+ return prefix;
}
/**
Modified: incubator/woden/java/src/org/apache/woden/internal/util/StringUtils.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/util/StringUtils.java?rev=293236&r1=293235&r2=293236&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/util/StringUtils.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/util/StringUtils.java Sun Oct 2 21:49:36 2005
@@ -196,7 +196,12 @@
public static List parseNMTokens(String nmTokens)
{
- StringTokenizer strTok = new StringTokenizer(nmTokens, " ");
+ return parseNMTokens(nmTokens, " ");
+ }
+
+ public static List parseNMTokens(String nmTokens, String delimiter)
+ {
+ StringTokenizer strTok = new StringTokenizer(nmTokens, delimiter);
List tokens = new Vector();
while (strTok.hasMoreTokens())
Modified: incubator/woden/java/src/org/apache/woden/internal/util/dom/DOMUtils.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/util/dom/DOMUtils.java?rev=293236&r1=293235&r2=293236&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/util/dom/DOMUtils.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/util/dom/DOMUtils.java Sun Oct 2 21:49:36 2005
@@ -15,7 +15,6 @@
*/
package org.apache.woden.internal.util.dom;
-import java.io.PrintWriter;
import java.util.List;
import java.util.ListIterator;
import java.util.Vector;
@@ -23,6 +22,7 @@
import javax.xml.namespace.QName;
import org.apache.woden.WSDLException;
+import org.apache.woden.wsdl20.xml.DescriptionElement;
import org.w3c.dom.Attr;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Element;
@@ -276,7 +276,7 @@
{
Element tempEl = (Element) tempNode;
String namespaceURI = (prefix == null)
- ? getAttribute (tempEl, "xmlns")
+ ? getAttribute (tempEl, ATTR_XMLNS)
: getAttributeNS (tempEl, NS_URI_XMLNS, prefix);
if (namespaceURI != null)
@@ -292,10 +292,9 @@
return null;
}
- /*
public static QName getQName(String prefixedValue,
Element contextEl,
- Definition def)
+ DescriptionElement desc)
throws WSDLException
{
int index = prefixedValue.indexOf(':');
@@ -307,12 +306,16 @@
if (namespaceURI != null)
{
- registerUniquePrefix(prefix, namespaceURI, def);
+ registerUniquePrefix(prefix, namespaceURI, desc);
+ //TODO pass prefix to QName ctor too, but what about if it was modified
+ //when registered because of name clash (pass original or modification)?
return new QName(namespaceURI, localPart);
}
else
{
+ //TODO use ErrorReporter here or in callers to report the problem
+
String faultCode = (prefix == null)
? WSDLException.NO_PREFIX_SPECIFIED
: WSDLException.UNBOUND_PREFIX;
@@ -327,13 +330,12 @@
throw wsdlExc;
}
}
- */
- /*
+
public static void registerUniquePrefix(String prefix,
String namespaceURI,
- Definition def)
+ DescriptionElement desc)
{
- String tempNSUri = def.getNamespace(prefix);
+ String tempNSUri = desc.getNamespace(prefix);
if (tempNSUri != null && tempNSUri.equals(namespaceURI))
{
@@ -343,10 +345,10 @@
while (tempNSUri != null && !tempNSUri.equals(namespaceURI))
{
prefix += "_";
- tempNSUri = def.getNamespace(prefix);
+ tempNSUri = desc.getNamespace(prefix);
}
- def.addNamespace(prefix, namespaceURI);
+ desc.addNamespace(prefix, namespaceURI);
}
/**
Modified: incubator/woden/java/src/org/apache/woden/internal/util/dom/QNameUtils.java
URL: http://svn.apache.org/viewcvs/incubator/woden/java/src/org/apache/woden/internal/util/dom/QNameUtils.java?rev=293236&r1=293235&r2=293236&view=diff
==============================================================================
--- incubator/woden/java/src/org/apache/woden/internal/util/dom/QNameUtils.java (original)
+++ incubator/woden/java/src/org/apache/woden/internal/util/dom/QNameUtils.java Sun Oct 2 21:49:36 2005
@@ -15,7 +15,11 @@
*/
package org.apache.woden.internal.util.dom;
+import java.util.List;
+
import javax.xml.namespace.QName;
+
+import org.apache.woden.internal.util.StringUtils;
import org.w3c.dom.Node;
public class QNameUtils
@@ -33,7 +37,38 @@
}
else
{
- return new QName(null, null);
+ return null;
}
+ }
+
+ /*
+ * TODO can use DOMUtils.getQName instead. Remove this method if it's not used.
+ *
+ * We expect the qnString to be in qname format 'prefix:localname',
+ * but will also accept just a 'localname'. If it is null or in
+ * any other format we cannot create a qname from it, so return null.
+ */
+ public static QName newQName(String qnString)
+ {
+ QName qname = null;
+
+ if(qnString != null)
+ {
+ int i = qnString.indexOf(":");
+ int j = qnString.lastIndexOf(":");
+
+ if(i == -1)
+ {
+ //no ":" delimiter so assume localname only, no prefix
+ qname = new QName(null, qnString);
+ }
+ else if(i == j && i < qnString.length()-1)
+ {
+ //we have one ":" delimiter and it is not the last character
+ qname = new QName(qnString.substring(0,i), qnString.substring(i+1));
+ }
+ }
+
+ return qname;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: woden-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: woden-dev-help@ws.apache.org