[jboss-svn-commits] JBoss Common SVN: r2146 - in jbossxb/trunk/src: main/java/org/jboss/xb/binding/sunday/xop test/java/org/jboss/test/xml

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Oct 26 08:14:57 EDT 2006


Author: alex.loubyansky at jboss.com
Date: 2006-10-26 08:14:52 -0400 (Thu, 26 Oct 2006)
New Revision: 2146

Modified:
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/xop/XOPElementHandler.java
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/xop/XOPIncludeHandler.java
   jbossxb/trunk/src/test/java/org/jboss/test/xml/XOPUnitTestCase.java
Log:
XOPElementHandler should always return an instance of XOPElement in case XOP is enabled

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/xop/XOPElementHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/xop/XOPElementHandler.java	2006-10-26 09:47:12 UTC (rev 2145)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/xop/XOPElementHandler.java	2006-10-26 12:14:52 UTC (rev 2146)
@@ -50,13 +50,13 @@
       }
       else
       {
-         return parent == null ? new XOPElement() : parent;
+         return new XOPElement();
       }
    }
 
    public Object endParticle(Object o, QName elementName, ParticleBinding particle)
    {
-      return o instanceof XOPElement ? ((XOPElement)o).value : o;
+      return o == null ? null : ((XOPElement)o).value;
    }
 
    public void setParent(Object parent,
@@ -69,7 +69,8 @@
       {
          return;
       }
-      
+
+      // should actually use the handler that would normally be used by the SundayContentHandler
       DefaultHandlers.ELEMENT_HANDLER.setParent(parent, o, elementName, particle, parentParticle);
    }
 

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/xop/XOPIncludeHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/xop/XOPIncludeHandler.java	2006-10-26 09:47:12 UTC (rev 2145)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/xop/XOPIncludeHandler.java	2006-10-26 12:14:52 UTC (rev 2146)
@@ -28,7 +28,6 @@
 import javax.xml.namespace.QName;
 import org.jboss.xb.binding.Constants;
 import org.jboss.xb.binding.JBossXBRuntimeException;
-import org.jboss.xb.binding.sunday.unmarshalling.DefaultHandlers;
 import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.ParticleHandler;
@@ -130,8 +129,7 @@
       }
       else
       {
-         ElementBinding parentElement = (ElementBinding)parentParticle.getTerm();
-         DefaultHandlers.ELEMENT_HANDLER.setParent(parent, o, parentElement.getQName(), particle, parentParticle);
+         throw new JBossXBRuntimeException("Expected XOPElement as a parent but got " + parent + " for element " + elementName);
       }
    }
 }

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xml/XOPUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xml/XOPUnitTestCase.java	2006-10-26 09:47:12 UTC (rev 2145)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xml/XOPUnitTestCase.java	2006-10-26 12:14:52 UTC (rev 2146)
@@ -24,7 +24,15 @@
 import org.jboss.xb.binding.Unmarshaller;
 import org.jboss.xb.binding.UnmarshallerFactory;
 import org.jboss.xb.binding.sunday.marshalling.MarshallerImpl;
-import org.jboss.xb.binding.sunday.unmarshalling.*;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TermBeforeSetParentCallback;
+import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.UnmarshallingContext;
+import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
 import org.jboss.xb.binding.sunday.xop.XOPMarshaller;
 import org.jboss.xb.binding.sunday.xop.XOPObject;
 import org.jboss.xb.binding.sunday.xop.XOPUnmarshaller;
@@ -34,7 +42,9 @@
 import javax.xml.transform.Source;
 import javax.xml.namespace.QName;
 import javax.activation.DataSource;
-import java.awt.*;
+
+import java.awt.Graphics;
+import java.awt.Image;
 import java.awt.image.ImageObserver;
 import java.awt.image.ImageProducer;
 import java.io.FileInputStream;
@@ -296,13 +306,10 @@
                child.setBeforeSetParentCallback(callback);
          }
 
-         // ---------------------------------------------------
-
-         TermBeforeSetParentCallback interceptXOPUnmarshallerResults = new TermBeforeSetParentCallback()
+         TermBeforeSetParentCallback xmimeBase64Callback = new TermBeforeSetParentCallback()
          {
             public Object beforeSetParent(Object o, UnmarshallingContext ctx)
             {
-
                ElementBinding e = (ElementBinding) ctx.getParticle().getTerm();
                Class propType = ctx.resolvePropertyType();
 
@@ -311,21 +318,23 @@
                String localPart = e.getQName().getLocalPart();
                if("xopContent".equals(localPart))
                {
-                  System.out.println("! xopContent handle on "+ e.getQName());
                   assertEquals(String.class, propType);
+                  if(propType.equals(String.class))
+                  {
+                     o = new String( (byte[])o);
+                  }
                }
+/* alexey: this is never the case
                else if("Include".equals(localPart))
                {
-                  System.out.println("! include handle on "+ e.getQName());
                   assertEquals(String.class, propType);
-
                   assertTrue( (o instanceof byte[]));
                   
                   // Type conversion required
                   if(propType.equals(String.class))
                      o = new String( (byte[])o);
                }
-
+*/
                return o;
             }
          };
@@ -334,8 +343,12 @@
          TypeBinding xmimeBase64Type = SCHEMA.getType(new QName("http://www.w3.org/2005/05/xmlmime", "base64Binary"));
          if(xmimeBase64Type!=null)
          {
-            xmimeBase64Type.setBeforeSetParentCallback( interceptXOPUnmarshallerResults );
+            xmimeBase64Type.setBeforeSetParentCallback( xmimeBase64Callback );
 
+            // alexey: the following shouldn't be used.
+            // callbacks should be set on the types and/or elements
+            // that can have xop:Include as their content
+            
             // xop:Include
             // Uncomment the following lines in order to intercept the
             // XOPUnmarshaller result _before_ the actual setter is invoked




More information about the jboss-svn-commits mailing list