[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