[jboss-svn-commits] JBoss Common SVN: r2574 - in jbossxb/trunk/src: main/java/org/jboss/xb/builder/runtime and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 24 12:59:42 EDT 2007


Author: alex.loubyansky at jboss.com
Date: 2007-09-24 12:59:42 -0400 (Mon, 24 Sep 2007)
New Revision: 2574

Modified:
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/AllBinding.java
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ChoiceBinding.java
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/DefaultHandlers.java
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ModelGroupBinding.java
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SequenceBinding.java
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java
   jbossxb/trunk/src/main/java/org/jboss/xb/builder/runtime/PropertyWildcardHandler.java
   jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingMetaData.java
   jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/AbstractBuilderTest.java
   jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/type/xmlanyelement/test/ElementWildcardWithCollectionPropertyUnitTestCase.java
   jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/type/xmlanyelement/test/ElementWildcardWithCollectionProperty.xml
Log:
JBXB-109 the test passes but there is some more work to be done to fix it properly

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/AllBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/AllBinding.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/AllBinding.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -121,6 +121,11 @@
             return occurence;
          }
 
+         public boolean isWildcardContent()
+         {
+            return false;
+         }
+         
          protected List startElement(QName qName, Attributes atts, Set passedGroups, List groupStack, boolean required)
          {
             ParticleBinding particle = (ParticleBinding)elements.get(qName);

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ChoiceBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ChoiceBinding.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ChoiceBinding.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -79,6 +79,7 @@
          private int pos = -1;
          private ElementBinding element;
          private int occurence;
+         private boolean wildcardContent;
 
          public ParticleBinding getCurrentParticle()
          {
@@ -127,6 +128,11 @@
             return occurence;
          }
 
+         public boolean isWildcardContent()
+         {
+            return wildcardContent;
+         }
+         
          protected List startElement(QName qName, Attributes atts, Set passedGroups, List groupStack, boolean required)
          {
             if(trace)
@@ -161,6 +167,7 @@
                log.trace(sb.toString());
             }
 
+            wildcardContent = false;
             int i = pos;
             if(pos >= 0)
             {
@@ -257,6 +264,8 @@
                         ++occurence;
                      }
                      groupStack = addItem(groupStack, this);
+                     wildcardContent = true;
+                     System.out.println(qName + " is wildcard content");
                      break;
                   }
                }

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/DefaultHandlers.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/DefaultHandlers.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/DefaultHandlers.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -41,6 +41,8 @@
 {
    public static ParticleHandler ELEMENT_HANDLER = RtElementHandler.INSTANCE;
 
+   public static ParticleHandler MODEL_GROUP_HANDLER = RtElementHandler.INSTANCE;
+
    public static ParticleHandler SIMPLE_HANDLER = new RtElementHandler()
    {
       public Object startParticle(Object parent, QName qName, ParticleBinding particle)

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ModelGroupBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ModelGroupBinding.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/ModelGroupBinding.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -48,7 +48,7 @@
    protected QName qName;
 
    protected boolean requiredParticle;
-   protected ParticleHandler handler = DefaultHandlers.ELEMENT_HANDLER;
+   protected ParticleHandler handler = DefaultHandlers.MODEL_GROUP_HANDLER;
 
    protected ModelGroupBinding(SchemaBinding schema)
    {
@@ -194,6 +194,8 @@
 
       public abstract int getOccurence();
 
+      public abstract boolean isWildcardContent();
+      
       // Protected
 
       protected abstract List startElement(QName qName,

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SequenceBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SequenceBinding.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SequenceBinding.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -88,6 +88,7 @@
          private int pos = -1;
          private ElementBinding element;
          private int occurence;
+         private boolean wildcardContent;
 
          public ParticleBinding getCurrentParticle()
          {
@@ -136,6 +137,11 @@
             return occurence;
          }
 
+         public boolean isWildcardContent()
+         {
+            return wildcardContent;
+         }
+         
          protected List startElement(QName qName, Attributes atts, Set passedGroups, List groupStack, boolean required)
          {
             if(trace)
@@ -170,6 +176,7 @@
                log.trace(sb.toString());
             }
 
+            wildcardContent = false;
             int i = pos;
             if(pos >= 0)
             {
@@ -310,6 +317,7 @@
                         ++occurence;
                      }
                      groupStack = addItem(groupStack, this);
+                     wildcardContent = true;
                      break;
                   }
 

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -562,7 +562,7 @@
             throw new JBossXBRuntimeException("No type for element " + element);
          }
 
-         handler = type.getHandler();
+         handler = type.getHandler();         
          if(handler == null)
          {
             handler = defParticleHandler;
@@ -1135,7 +1135,10 @@
             if (wildcard != null)
             {
                hasWildcard = true;
-               wildcardHandler = wildcard.getWildcardHandler();
+               if(parentItem.cursor.isWildcardContent())
+               {
+                  wildcardHandler = wildcard.getWildcardHandler();
+               }
             }
          }
 

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/WildcardBinding.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -231,14 +231,23 @@
       }
 
       // todo this stuff could be cached
-      ParticleBinding particle = new ParticleBinding(this);
+      // the 'this' wildcard could be reused
+      // the reason it is overriden is to eliminate its wildcardHandler
+      // which is not initialized in the new one
+      WildcardBinding unresolvedWildcard = new WildcardBinding(schema);
+      unresolvedWildcard.pc = PC_LAX;
+      unresolvedWildcard.schemaResolver = schemaResolver;
+      unresolvedWildcard.unresolvedCharactersHandler = unresolvedCharactersHandler;
+      unresolvedWildcard.unresolvedElementHandler = unresolvedElementHandler;
+      
+      ParticleBinding particle = new ParticleBinding(unresolvedWildcard);
       SequenceBinding sequence = new SequenceBinding(schema);
       sequence.addParticle(particle);
 
       TypeBinding type = new TypeBinding();
       type.setHandler(unresolvedElementHandler);
       type.setSimpleType(unresolvedCharactersHandler);
-      type.setParticle(new ParticleBinding(sequence));
+      type.setParticle(new ParticleBinding(sequence, 1, 0, true));
 
       return new ElementBinding(schema, qName, type);
    }

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/builder/runtime/PropertyWildcardHandler.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/builder/runtime/PropertyWildcardHandler.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/builder/runtime/PropertyWildcardHandler.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -66,6 +66,7 @@
          wrapper.setParentParticle(parentParticle);
          return;
       }
+
       BeanAdapter beanAdapter = (BeanAdapter) parent;
       AbstractPropertyHandler propertyHandler = beanAdapter.getPropertyHandler(elementName);
       if (propertyHandler != null)

Modified: jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingMetaData.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingMetaData.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/test/java/org/jboss/ejb/metadata/jboss/InvokerProxyBindingMetaData.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -26,6 +26,7 @@
 
 import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 /**
@@ -34,7 +35,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
- at XmlType(name="invoker-proxy-bindingType")
+ at XmlType(name="invoker-proxy-bindingType", propOrder={"descriptions", "name", "invokerProxyBindingName", "invokerMBean", "proxyFactory", "wildcard"})
 public class InvokerProxyBindingMetaData extends NamedMetaDataWithDescriptions
 {
    /** The serialVersionUID */
@@ -122,9 +123,24 @@
       return proxyFactoryConfig;
    }
 
-   @XmlAnyElement(lax=true)
+   @XmlTransient
    public void setProxyFactoryConfig(Element proxyFactoryConfig)
    {
       this.proxyFactoryConfig = proxyFactoryConfig;
    }
+   
+   public Element getWildcard()
+   {
+      return getProxyFactoryConfig();
+   }
+
+   /**
+    * This is a hack to make proxy-factory-config parsed as
+    * unresolved element of a wildcard
+    */
+   @XmlAnyElement(lax=true)
+   public void setWildcard(Element e)
+   {
+      setProxyFactoryConfig(e);
+   }
 }

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/AbstractBuilderTest.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/AbstractBuilderTest.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/AbstractBuilderTest.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -35,6 +35,7 @@
 import org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding;
 import org.jboss.xb.binding.sunday.unmarshalling.TermBinding;
 import org.jboss.xb.builder.JBossXBBuilder;
+import org.jboss.xb.builder.runtime.BuilderParticleHandler;
 
 /**
  * AbstractBuilderTest.
@@ -51,6 +52,7 @@
       // Uncomment this to make sure we aren't using the RtElementHandler anywhere
       DefaultHandlers.ELEMENT_HANDLER = new DebugElementHandler();
       DefaultHandlers.SIMPLE_HANDLER = DefaultHandlers.ELEMENT_HANDLER;
+      DefaultHandlers.MODEL_GROUP_HANDLER = BuilderParticleHandler.INSTANCE;
    }
 
    public AbstractBuilderTest(String name)

Modified: jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/type/xmlanyelement/test/ElementWildcardWithCollectionPropertyUnitTestCase.java
===================================================================
--- jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/type/xmlanyelement/test/ElementWildcardWithCollectionPropertyUnitTestCase.java	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/test/java/org/jboss/test/xb/builder/object/type/xmlanyelement/test/ElementWildcardWithCollectionPropertyUnitTestCase.java	2007-09-24 16:59:42 UTC (rev 2574)
@@ -44,6 +44,7 @@
 import org.jboss.xb.builder.runtime.DOMHandler;
 import org.jboss.xb.builder.runtime.PropertyWildcardHandler;
 import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
 
 /**
  * ElementWildcardUnitTestCase.
@@ -74,6 +75,11 @@
       Element element = result.getWildcard();
       assertNotNull(element);
       assertEquals("test-element", element.getNodeName());
+      NodeList childNodes = element.getChildNodes();
+      assertNotNull(childNodes);
+      assertEquals(1, childNodes.getLength());
+      element = (Element) childNodes.item(0);
+      assertEquals("test-child-element", element.getNodeName());
    }
 
    // TODO Fix this
@@ -92,6 +98,7 @@
       TermBinding term = particle.getTerm();
       assertNotNull(term);
       assertTrue(term instanceof SequenceBinding);
+      // i don't think the following assertion is wrong
       term = assertSingleSequence(term);
       assertTrue(term instanceof WildcardBinding);
       WildcardBinding wildcardBinding = type.getWildcard();

Modified: jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/type/xmlanyelement/test/ElementWildcardWithCollectionProperty.xml
===================================================================
--- jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/type/xmlanyelement/test/ElementWildcardWithCollectionProperty.xml	2007-09-21 16:26:07 UTC (rev 2573)
+++ jbossxb/trunk/src/test/resources/org/jboss/test/xb/builder/object/type/xmlanyelement/test/ElementWildcardWithCollectionProperty.xml	2007-09-24 16:59:42 UTC (rev 2574)
@@ -3,5 +3,7 @@
 <element-wildcard-with-collection-property>
    <property>1</property>
    <property>2</property>
-   <test-element/>
+   <test-element>
+      <test-child-element/>
+   </test-element>
 </element-wildcard-with-collection-property>
\ No newline at end of file




More information about the jboss-svn-commits mailing list