[jboss-svn-commits] JBoss Common SVN: r2433 - 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
Tue Jun 26 10:28:36 EDT 2007


Author: alex.loubyansky at jboss.com
Date: 2007-06-26 10:28:36 -0400 (Tue, 26 Jun 2007)
New Revision: 2433

Modified:
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/Content.java
   jbossxb/trunk/src/test/java/org/jboss/test/xml/IgnorableWhitespaceUnitTestCase.java
Log:
JBXB-103 marshalling part

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/Content.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/Content.java	2007-06-25 20:24:45 UTC (rev 2432)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/Content.java	2007-06-26 14:28:36 UTC (rev 2433)
@@ -214,16 +214,16 @@
    public void characters(char[] ch, int start, int length)
    {
       Characters characters = new Characters(ch, start, length);
-      // ignore whitespace-only characters
-      if(characters.toString().trim().length() > 0)
-      {
+      // DON'T ignore whitespace-only characters
+      //if(characters.toString().trim().length() > 0)
+      //{
          content.add(characters);
 
          if(trace)
          {
             log.trace("characters> " + characters);
          }
-      }
+      //}
    }
 
    // Methods that navigate through the content

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/IgnorableWhitespaceUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/IgnorableWhitespaceUnitTestCase.java	2007-06-25 20:24:45 UTC (rev 2432)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/IgnorableWhitespaceUnitTestCase.java	2007-06-26 14:28:36 UTC (rev 2433)
@@ -22,6 +22,7 @@
 package org.jboss.test.xml;
 
 import java.io.StringReader;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -34,6 +35,7 @@
 import org.jboss.xb.binding.UnmarshallerFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
 import org.jboss.xb.binding.metadata.ClassMetaData;
+import org.jboss.xb.binding.sunday.marshalling.MarshallerImpl;
 import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
@@ -84,7 +86,7 @@
       super(name);
    }
 
-   public void testCollectionOverrideProperty() throws Exception
+   public void testWhitespaceUnmarshalling() throws Exception
    {
       SchemaBinding schema = XsdBinder.bind(new StringReader(XSD), null);
 
@@ -104,6 +106,37 @@
       assertEquals("\n      newline, 6 spaces, newline, 3 spaces\n   ", top.string.get(1));
    }
 
+   public void testWhitespaceMarshalling() throws Exception
+   {
+      SchemaBinding schema = XsdBinder.bind(new StringReader(XSD), null);
+
+      schema.setIgnoreUnresolvedFieldOrClass(false);
+      schema.setIgnoreWhitespacesInMixedContent(false);
+
+      ClassMetaData classMetaData = new ClassMetaData();
+      classMetaData.setImpl(Top.class.getName());
+      ElementBinding element = schema.getElement(new QName(NS, "top"));
+      assertNotNull(element);
+      element.setClassMetaData(classMetaData);
+      
+      Top top = new Top();
+      top.string = new ArrayList();
+      top.string.add(" ");
+      top.string.add("\n      newline, 6 spaces, newline, 3 spaces\n   ");
+      MarshallerImpl marshaller = new MarshallerImpl();
+      StringWriter writer = new StringWriter();
+      marshaller.marshal(schema, null, top, writer);
+      
+      // TODO: the xml diff trims whitespaces...
+      //assertXmlFileContent("IgnorableWhitespaceContent.xml", writer.getBuffer().toString());
+      //System.out.println(writer.getBuffer().toString());
+      
+      Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
+      Object o = unmarshaller.unmarshal(new StringReader(writer.getBuffer().toString()), schema);
+      
+      assertEquals(top, o);
+   }
+
    public void testObjectModelFactory() throws Exception
    {
       String url = findXML("IgnorableWhitespaceContent.xml");
@@ -151,5 +184,37 @@
    public static class Top
    {
       public List string;
+
+      public int hashCode()
+      {
+         final int PRIME = 31;
+         int result = 1;
+         result = PRIME * result + ((string == null) ? 0 : string.hashCode());
+         return result;
+      }
+
+      public boolean equals(Object obj)
+      {
+         if (this == obj)
+            return true;
+         if (obj == null)
+            return false;
+         if (getClass() != obj.getClass())
+            return false;
+         final Top other = (Top) obj;
+         if (string == null)
+         {
+            if (other.string != null)
+               return false;
+         }
+         else if (!string.equals(other.string))
+            return false;
+         return true;
+      }
+      
+      public String toString()
+      {
+         return "[top: string=" + string + "]";
+      }
    }
 }




More information about the jboss-svn-commits mailing list