Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
    * JBoss, Home of Professional Open Source
    * Copyright 2005, JBoss Inc., and individual contributors as indicated
    * by the @authors tag. See the copyright.txt in the distribution for a
    * full listing of individual contributors.
    *
    * This is free software; you can redistribute it and/or modify it
    * under the terms of the GNU Lesser General Public License as
    * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
 package org.jboss.xb.binding.sunday.unmarshalling;
 
 import java.util.Set;
 import java.util.Map;
 import java.util.List;

Author(s):
Alexey Loubyansky
Version:
$Revision: 2999 $
 
 public class AllBinding
    extends ModelGroupBinding
 {
    //private static final Logger log = Logger.getLogger(AllBinding.class);
 
    private Map<QNameParticleBindingelements = Collections.emptyMap();
 
    public AllBinding(SchemaBinding schema)
    {
       super(schema);
    }
 
    public ElementBinding getArrayItem()
    {
       return null;
    }
 
    public void addParticle(ParticleBinding particle)
    {
       if(!particle.getTerm().isElement())
       {
          throw new JBossXBRuntimeException("Model group all may contain only elements!");
       }
 
       ElementBinding element = (ElementBinding)particle.getTerm();
       switch(.size())
       {
          case 0:
              = Collections.singletonMap(element.getQName(), particle);
             break;
          case 1:
              = new HashMap<QNameParticleBinding>();
          default:
             .put(element.getQName(), particle);
       }
       super.addParticle(particle);
    }
 
    {
       return Collections.unmodifiableCollection(.values());
    }
 
    public Cursor newCursor(ParticleBinding particle)
    {
       return new Cursor(particle)
       {
          private ParticleBinding curParticle;
 
          public ParticleBinding getCurrentParticle()
          {
             if( == null)
             {
                throw new JBossXBRuntimeException("The cursor in all group has not been positioned yet!");
             }
             return ;
          }
 
          public ElementBinding getElement()
          {
             return (ElementBinding)getCurrentParticle().getTerm();
         }
         public boolean isPositioned()
         {
            return  != null;
         }
         public void endElement(QName qName)
         {
            if( == null || !getElement().getQName().equals(qName))
            {
               throw new JBossXBRuntimeException("Failed to process endElement for " + qName +
                  " since the current element is " + ( == null ? null : getElement().getQName())
               );
            }
         }
         public boolean isWildcardContent()
         {
            return false;
         }
         
         protected List<ModelGroupBinding.CursorstartElement(QName qNameAttributes attsSet<ModelGroupBinding.CursorpassedGroupsList<ModelGroupBinding.CursorgroupStackboolean required)
         {
            ParticleBinding particle = (ParticleBinding).get(qName);
            if(particle != null)
            {
               if( == particle)
               {
                  ++;
               }
               else
               {
                   = particle;
                   = 1;
               }
               groupStack = addItem(groupStackthis);
            }
            return groupStack;
         }
         protected ElementBinding getElement(QName qNameAttributes attsSet<ModelGroupBinding.CursorpassedGroupsboolean ignoreWildcards)
         {
            ParticleBinding particle = (ParticleBinding).get(qName);
            return particle == null ? null : (ElementBinding)particle.getTerm();
         }
      };
   }
   protected boolean mayStartWith(QName qNameSet<ModelGroupBindingset)
   {
      return .containsKey(qName);
   }
   public String getGroupType()
   {
      return "all";
   }
New to GrepCode? Check out our FAQ X