Examples of TermBinding


Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

   }
  
   public void assertEquivalent(XSParticle xsParticle, ParticleBinding particleBinding)
   {
      XSTerm xsTerm = xsParticle.getTerm();
      TermBinding termBinding = particleBinding.getTerm();
      assertNotNull("Particle binding has a term", termBinding);
      short xsTermType = xsTerm.getType();
      String termStr = null;
      if(xsTermType == XSConstants.MODEL_GROUP)
      {
         termStr = "sequence";
         XSModelGroup xsModelGroup = (XSModelGroup)xsTerm;
         short xsModelGroupCompositor = (xsModelGroup).getCompositor();
         if(XSModelGroup.COMPOSITOR_CHOICE == xsModelGroupCompositor)
            termStr = "choice";
         else if(XSModelGroup.COMPOSITOR_ALL == xsModelGroupCompositor)
            termStr = "all";

         if(!termBinding.isModelGroup())
         {
            // TODO review this
            // let's see whether it's wrapped
            if(xsModelGroup.getParticles().getLength() == 1)
            {
               XSParticle xsWrappedParticle = (XSParticle) xsModelGroup.getParticles().item(0);
               assertEquivalent(xsWrappedParticle, particleBinding);
            }
            else
               fail("TermBinding expected to be a " + termStr + " but was " + termBinding);
         }
         else
            assertEquivalent(xsModelGroup, (ModelGroupBinding) termBinding);
      }
      else if(xsTermType == XSConstants.ELEMENT_DECLARATION)
      {
         XSElementDeclaration xsElement = (XSElementDeclaration) xsTerm;
         QName xsElementName = new QName(xsElement.getNamespace(), xsElement.getName());
         termStr = xsElementName.toString();

         if(!termBinding.isElement())
         {
            // TODO sometimes XB wraps (maybe unnecessarily) repeatable elements into a sequence.
            // the same xml structure can be described differently in xsd
            if (/*(xsParticle.getMaxOccursUnbounded() || xsParticle.getMaxOccurs() > 1) &&*/
                  termBinding instanceof SequenceBinding)
            {
               SequenceBinding seq = (SequenceBinding) termBinding;
               Collection<ParticleBinding> particles = seq.getParticles();
               if(particles.size() == 1)
               {
                  ParticleBinding particle = particles.iterator().next();
                  if(particle.getTerm().isElement())
                  {
                     particleBinding = particle;
                     termBinding = particle.getTerm();
                  }
               }
            }
            assertTrue("TermBinding expected to be an element " + termStr + " but was " + termBinding, termBinding.isElement());
         }
        
         assertEquals(xsElementName, ((ElementBinding)termBinding).getQName());
      }
      else if(xsTermType == XSConstants.WILDCARD)
      {
         assertTrue("TermBinding expected to be a wildcard but was " + termBinding, termBinding.isWildcard());
         XSWildcard xsWildcard = (XSWildcard) xsTerm;
         WildcardBinding wildcardBinding = (WildcardBinding) termBinding;
         assertEquals("WildcardBinding process content.", xsWildcard.getProcessContents(), wildcardBinding.getProcessContents());
         termStr = "wildcard";
      }
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

                  msg += "actual particles:\n";
                  Iterator<ParticleBinding> iter = particleBindings.iterator();
                  while (iter.hasNext())
                  {
                     TermBinding term = iter.next().getTerm();
                     if (term.isModelGroup())
                     {
                        if (term instanceof SequenceBinding)
                           msg += "- sequence\n";
                        else if (term instanceof ChoiceBinding)
                           msg += "- choice\n";
                        else
                           msg += "- wildcard\n";
                     }
                     else if (term.isElement())
                        msg += "- " + ((ElementBinding) term).getQName() + "\n";
                     else
                        msg += "- wildcard";
                  }
                  log.trace(msg);
                 
                  List<QName> missing = new ArrayList<QName>(xsElementParticles.keySet());
                  missing.removeAll(elementParticles.keySet());
                  log.trace("flattened ModelGroupBinding is missing: ");
                  for (Iterator<QName> missingNames = missing.iterator(); missingNames.hasNext();)
                     log.trace("- " + missingNames.next());

                  missing = new ArrayList<QName>(elementParticles.keySet());
                  missing.removeAll(xsElementParticles.keySet());
                  log.trace("flattened XSModelGroup is missing: ");
                  for (Iterator<QName> missingNames = missing.iterator(); missingNames.hasNext();)
                     log.trace("- " + missingNames.next());
               }
               fail("ModelGroupBinding particles total expected " + xsParticles.getLength() + " but was "
                     + particleBindings.size());
            }
         }
      }

      if(xsElementParticles != null)
      {
         Iterator<ParticleBinding> iter = elementParticles.values().iterator();
         while(iter.hasNext())
         {
            ParticleBinding particleBinding = iter.next();
            QName particleQName;
            TermBinding termBinding = particleBinding.getTerm();
            if(termBinding.isWildcard())
               particleQName = WILDCARD;
            else
               particleQName = ((ElementBinding)termBinding).getQName();
            XSParticle xsParticle = xsElementParticles.get(particleQName);
            if(xsParticle == null)
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

   {
      Iterator<ParticleBinding> i = group.getParticles().iterator();
      while(i.hasNext())
      {
         ParticleBinding particle = i.next();
         TermBinding term = particle.getTerm();
         if(term.isElement())
         {
            ElementBinding element = (ElementBinding) term;
            elementParticles.put(element.getQName(), particle);
         }
         else if(term.isWildcard())
            elementParticles.put(WILDCARD, particle);
         else
         {
            ModelGroupBinding modelGroup = (ModelGroupBinding) term;
            flatten(modelGroup, elementParticles);
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

      }
   }

   public static void printParticle(StringBuilder builder, int pad, ParticleBinding particle)
   {
      TermBinding term = particle.getTerm();
      if (term instanceof ElementBinding)
         printElement(builder, pad, particle);
      else if (term instanceof WildcardBinding)
         printWildcard(builder, pad, particle);
      else if (term instanceof SequenceBinding)
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

      }
   }

   public static void printParticle(StringBuilder builder, int pad, ParticleBinding particle)
   {
      TermBinding term = particle.getTerm();
      if (term instanceof ElementBinding)
         printElement(builder, pad, particle);
      else if (term instanceof WildcardBinding)
         printWildcard(builder, pad, particle);
      else if (term instanceof SequenceBinding)
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

            {
               if(o != null)
               {
                  ParticleBinding particle = ctx.getParticleBinding();
                  assertNotNull(particle);
                  TermBinding term = particle.getTerm();
                  assertTrue(term.isElement());
                  ElementBinding element = (ElementBinding) term;
                  String localPart = element.getQName().getLocalPart();
                  assertTrue("stringType".endsWith(localPart) || "item".equals(localPart));
                  TypeBinding type = element.getType();
                  assertEquals(Constants.QNAME_STRING, type.getQName());
                 
                  o = ((GlobalElement.StringType)o).data;
               }
               return o;
            }
         });        
         stringType.setBeforeSetParentCallback(new TermBeforeSetParentCallback()
         {
            public Object beforeSetParent(Object o, UnmarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticle();
               assertNotNull(particle);
               assertTrue(particle.getTerm().isElement());
               ElementBinding element = (ElementBinding) particle.getTerm();
              
               String eName = element.getQName().getLocalPart();
               if(eName.equals("stringType"))
               {
                  assertTrue(ctx.getParentValue() instanceof GlobalElement);
                  TermBinding parentTerm = ctx.getParentParticle().getTerm();
                  assertTrue(parentTerm.isElement());
                  assertEquals("global", ((ElementBinding)parentTerm).getQName().getLocalPart());

                  assertEquals("stringType", ctx.resolvePropertyName());
                  assertEquals(StringType.class, ctx.resolvePropertyType());
               }
               else if(eName.equals("item"))
               {
                  assertTrue(ctx.getParentValue() instanceof GlobalElement.Sequence);
                  TermBinding parentTerm = ctx.getParentParticle().getTerm();
                  assertTrue(parentTerm instanceof SequenceBinding);
                 
                  assertEquals("item", ctx.resolvePropertyName());
                  assertEquals(StringType.class, ctx.resolvePropertyType());
               }
               else
               {
                  fail("Expected stringType or item but got " + eName);
               }
               return o == null ? null : new GlobalElement.StringType((String)o);
            }
         });
        
         // have to override string type's handlers
         ElementBinding global = SCHEMA.getElement(new QName("http://jboss.org/ns/test", "global"));
         SequenceBinding sequence = (SequenceBinding) global.getType().getParticle().getTerm();
         Iterator iter = sequence.getParticles().iterator();
         iter.next(); // stringType element
         ElementBinding stringElement = (ElementBinding) ((ParticleBinding)iter.next()).getTerm();
         stringElement.setBeforeMarshallingCallback(new TermBeforeMarshallingCallback()
         {
            public Object beforeMarshalling(Object o, MarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticleBinding();
               assertNotNull(particle);
               assertTrue(particle.getTerm().isElement());
               ElementBinding element = (ElementBinding) particle.getTerm();
               assertEquals(new QName("http://jboss.org/ns/test", "stringElement"), element.getQName());
              
               TypeBinding type = element.getType();
               assertEquals(Constants.QNAME_STRING, type.getQName());
              
               return o == null ? null : (String)o;
            }
         });        
         stringElement.setBeforeSetParentCallback(new TermBeforeSetParentCallback()
         {
            public Object beforeSetParent(Object o, UnmarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticle();
               assertNotNull(particle);
               assertTrue(particle.getTerm().isElement());
               ElementBinding element = (ElementBinding) particle.getTerm();
               assertEquals(new QName("http://jboss.org/ns/test", "stringElement"), element.getQName());
              
               assertTrue(ctx.getParentValue() instanceof GlobalElement);
               TermBinding parentTerm = ctx.getParentParticle().getTerm();
               assertTrue(parentTerm.isElement());
               assertEquals("global", ((ElementBinding)parentTerm).getQName().getLocalPart());

               assertEquals(String.class, ctx.resolvePropertyType());

               return o == null ? null : (String)o;
            }
         });
        
         // sequence
         sequence = (SequenceBinding) ((ParticleBinding)iter.next()).getTerm();
         sequence.setBeforeMarshallingCallback(new TermBeforeMarshallingCallback()
         {
            public Object beforeMarshalling(Object o, MarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticleBinding();
               assertNotNull(particle);
               assertTrue(particle.getTerm() instanceof SequenceBinding);

               if(o != null)
               {
                  GlobalElement.Sequence seq = new GlobalElement.Sequence();
                  seq.item = (StringType) o;
                  o = seq;
               }
               return o;
            }
         });
         sequence.setBeforeSetParentCallback(new TermBeforeSetParentCallback()
         {
            public Object beforeSetParent(Object o, UnmarshallingContext ctx)
            {
               ParticleBinding particle = ctx.getParticle();
               assertTrue(particle.getTerm() instanceof SequenceBinding);

               assertTrue(ctx.getParentValue() instanceof GlobalElement);
               TermBinding parentTerm = ctx.getParentParticle().getTerm();
               assertTrue(parentTerm.isElement());
               assertEquals("global", ((ElementBinding)parentTerm).getQName().getLocalPart());

               String prop = ctx.resolvePropertyName();
               assertEquals("sequenceItem", prop);
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

      {
         // <element ref=
         ParticleBinding particle = typeBinding.getParticle();
         if (particle != null)
         {
            TermBinding term = particle.getTerm();
            if (term instanceof ModelGroupBinding)
            {
               Iterator iterator = ((ModelGroupBinding)term).getParticles().iterator();
               element = findLocalPathElement(iterator, new String[] { varMapping.getXmlElementName() }, 0);
            }
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

         {
            ParticleBinding particle = type.getParticle();
            if (particle == null)
               continue;

            TermBinding term = particle.getTerm();
            if (!term.isModelGroup())
               continue;

            return findLocalPathElement(((ModelGroupBinding)term).getParticles().iterator(), path, 1);
         }
      }
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

      ParticleBinding particle = element.getType().getParticle();
      if (particle == null)
         return null;

      TermBinding term = particle.getTerm();
      if (!term.isModelGroup())
         return null;

      ModelGroupBinding group = (ModelGroupBinding)term;
      Iterator i = group.getParticles().iterator();
View Full Code Here

Examples of org.jboss.xb.binding.sunday.unmarshalling.TermBinding

   private ElementBinding findLocalPathElement(Iterator particles, String[] path, int pos)
   {
      while (particles.hasNext())
      {
         TermBinding term = ((ParticleBinding)particles.next()).getTerm();
         if (term instanceof ElementBinding)
         {
            ElementBinding element = (ElementBinding)term;
            element = findLocalPathElement(element, path, pos);
            if (element != null)
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.