[jboss-svn-commits] JBoss Common SVN: r2113 - jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 9 18:12:37 EDT 2006


Author: alex.loubyansky at jboss.com
Date: 2006-10-09 18:12:34 -0400 (Mon, 09 Oct 2006)
New Revision: 2113

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/TypeBinding.java
   jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/XsdBinder.java
Log:
removed TypeBinding.[set/has]Wildcard(). XsdBinder threw NPE while binding wildcards that were children of global model groups

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	2006-10-09 22:09:40 UTC (rev 2112)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/SundayContentHandler.java	2006-10-09 22:12:34 UTC (rev 2113)
@@ -980,7 +980,7 @@
             }
          }
          else if(parentParticle != null &&
-            ((ElementBinding)parentParticle.getTerm()).getType().hasWildcard() &&
+            ((ElementBinding)parentParticle.getTerm()).getType().getWildcard() != null &&
             stack.size() > 1)
          {
             // the parent has anyType, so it gets the value of its child
@@ -1148,7 +1148,7 @@
          list.clear();
       }
 
-      public void push(Object o)
+      public void push(StackItem o)
       {
          list.add(o);
       }

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TypeBinding.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TypeBinding.java	2006-10-09 22:09:40 UTC (rev 2112)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/TypeBinding.java	2006-10-09 22:12:34 UTC (rev 2113)
@@ -444,21 +444,23 @@
       this.startElementCreatesObject = startElementCreatesObject ? Boolean.TRUE : Boolean.FALSE;
    }
 
-   public void setWildcard(WildcardBinding wildcard)
-   {
-      this.wildcard = wildcard;
-   }
-
+   private boolean initializedWildcard;
    public WildcardBinding getWildcard()
    {
+      if(initializedWildcard)
+      {
+         return wildcard;
+      }
+      
+      if(particle != null)
+      {
+         wildcard = getWildcard(particle.getTerm());
+         initializedWildcard = true;
+      }
+      
       return wildcard;
    }
 
-   public boolean hasWildcard()
-   {
-      return wildcard != null;
-   }
-
    public ParticleBinding getParticle()
    {
       return particle;
@@ -568,4 +570,31 @@
    {
       return super.toString() + "[" + qName + "]";
    }
+
+   private static WildcardBinding getWildcard(TermBinding term)
+   {
+      if(term.isWildcard())
+      {
+         return (WildcardBinding) term;
+      }     
+      
+      if(term.isModelGroup())
+      {
+         ModelGroupBinding group = (ModelGroupBinding) term;
+         for(Iterator i = group.getParticles().iterator(); i.hasNext();)
+         {
+            term = ((ParticleBinding)i.next()).getTerm();
+            if(term.isWildcard())
+            {
+               return (WildcardBinding)term;
+            }
+            else if(term.isModelGroup())
+            {
+               return getWildcard(term);
+            }
+         }
+      }
+      
+      return null;
+   }
 }

Modified: jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/XsdBinder.java
===================================================================
--- jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/XsdBinder.java	2006-10-09 22:09:40 UTC (rev 2112)
+++ jbossxb/trunk/src/main/java/org/jboss/xb/binding/sunday/unmarshalling/XsdBinder.java	2006-10-09 22:12:34 UTC (rev 2113)
@@ -933,15 +933,6 @@
       particleBinding.setMinOccurs(particle.getMinOccurs());
       group.addParticle(particleBinding);
 
-      TypeBinding type = ctx.peekType();
-      type.setWildcard(binding);
-
-      if (ctx.trace)
-      {
-         log.trace("added wildcard to " + group);
-         log.trace("added wildcard to type " + type.getQName());
-      }
-
       XSWildcard wildcard = (XSWildcard)particle.getTerm();
       if(wildcard.getName() != null)
       {




More information about the jboss-svn-commits mailing list