[jboss-svn-commits] JBoss Common SVN: r2650 - in jbossxb/trunk/src: test/java/org/jboss/test/xml and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Oct 24 16:11:20 EDT 2007
Author: alex.loubyansky at jboss.com
Date: 2007-10-24 16:11:20 -0400 (Wed, 24 Oct 2007)
New Revision: 2650
Modified:
jbossxb/trunk/src/main/java/org/jboss/xb/binding/SimpleTypeBindings.java
jbossxb/trunk/src/test/java/org/jboss/test/xml/SimpleTypeBindingUnitTestCase.java
Log:
JBXB-113
Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/SimpleTypeBindings.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/SimpleTypeBindings.java 2007-10-24 17:42:59 UTC (rev 2649)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/SimpleTypeBindings.java 2007-10-24 20:11:20 UTC (rev 2650)
@@ -1983,6 +1983,15 @@
*/
public static QName unmarshalQName(String value, NamespaceContext nsRegistry)
{
+ if(value.charAt(0) == '{')
+ {
+ int i = value.lastIndexOf('}');
+ if(i == -1)
+ throw new IllegalStateException("Malformed QName: the closing '}' not found in " + value);
+ String nsURI = value.substring(1, i);
+ return new QName(nsURI, value.substring(i + 1));
+ }
+
int colonIndex = value.lastIndexOf(":");
if(colonIndex > 0)
{
@@ -2017,7 +2026,7 @@
prefix = nsRegistry.getPrefix(nsURI);
if(prefix == null)
{
- throw new IllegalStateException("Namespace URI not registered: " + nsURI);
+ return '{' + nsURI + '}' + value.getLocalPart();
}
}
else
Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/SimpleTypeBindingUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/SimpleTypeBindingUnitTestCase.java 2007-10-24 17:42:59 UTC (rev 2649)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/SimpleTypeBindingUnitTestCase.java 2007-10-24 20:11:20 UTC (rev 2650)
@@ -459,6 +459,40 @@
assertEquals(qName.getLocalPart(), unmarshalled.getLocalPart());
}
+ public void testNoPrefixQName() throws Exception
+ {
+ final String ns = "http://jboss.org/test/simple/bindings";
+ String local = "test1";
+ QName qName = new QName(ns, local);
+
+ NamespaceContext nsCtx = new NamespaceContext()
+ {
+ public String getNamespaceURI(String p)
+ {
+ return null;
+ }
+
+ public String getPrefix(String namespaceURI)
+ {
+ return null;
+ }
+
+ public Iterator getPrefixes(String namespaceURI)
+ {
+ return Collections.emptyList().iterator();
+ }
+ };
+
+ String marshalled = SimpleTypeBindings.marshal(SimpleTypeBindings.XS_QNAME_NAME, qName, nsCtx);
+ assertEquals('{' + ns + '}' + local, marshalled);
+
+ QName unmarshalled = (QName)SimpleTypeBindings.unmarshal(SimpleTypeBindings.XS_QNAME_NAME, marshalled, nsCtx);
+
+ assertEquals(qName.getPrefix(), unmarshalled.getPrefix());
+ assertEquals(qName.getNamespaceURI(), unmarshalled.getNamespaceURI());
+ assertEquals(qName.getLocalPart(), unmarshalled.getLocalPart());
+ }
+
public void testBooleanListUnmarshalling() throws Exception
{
List booleans = SimpleTypeBindings.unmarshalList(
More information about the jboss-svn-commits
mailing list