Clover coverage report - JBind Project
Coverage timestamp: Fr Mai 28 2004 11:17:36 CEST
file stats: LOC: 70   Methods: 4
NCLOC: 46   Classes: 1
This license of Clover is provided to support the development of JBind only. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover.
 
 Source file Conditionals Statements Methods TOTAL
UseStateIterator.java 100% 100% 100% 100%
 1   
 /*
 2   
  * JBind
 3   
  *
 4   
  * Copyright (c) by Stefan Wachter. All rights reserved.
 5   
  *
 6   
  * Usage, modification, and redistribution is subject to license terms that are
 7   
  * available at 'http://www.jbind.org'. The JBind license is like the
 8   
  * 'Apache Software License V 1.1'.
 9   
  */
 10   
 package org.jbind.xml.instance.use;
 11   
 
 12   
 import org.jbind.xml.base.IHasLocation;
 13   
 import org.jbind.xml.core.cmp.IUseStateIterator;
 14   
 import org.jbind.xml.core.content.IContentDesc;
 15   
 import org.jbind.xml.core.content.IElemDesc;
 16   
 import org.jbind.xml.core.content.IElemRefOrDecl;
 17   
 import org.jbind.xml.core.content.IElemUseState;
 18   
 import org.jbind.xml.core.content.IUseState;
 19   
 import org.jbind.xml.core.type.IAnyType;
 20   
 import org.jbind.xml.msg.XmlException;
 21   
 import org.jbind.xml.msg.XmlMessages;
 22   
 
 23   
 public class UseStateIterator implements IUseStateIterator {
 24   
 
 25   
   private IUseState myState = null;
 26   
   private IElemRefOrDecl mySubstitutionHead = null;
 27   
 
 28  1859
   public UseStateIterator(IContentDesc aContent) {
 29  1859
     myState = aContent.createUseState(null);
 30   
   }
 31   
 
 32  2490
   public IElemDesc getNextElemDesc(String aNamespace, String aName, IAnyType anOverloadingType, IHasLocation aHasLocation) throws XmlException {
 33  2490
     IElemUseState nextState = null;
 34   
 
 35  2490
     do {
 36  3992
       nextState = myState.getNextUseState(aNamespace, aName, anOverloadingType, aHasLocation);
 37  3987
       if (null == nextState) {
 38  1528
         if (myState.getUseCounter() < myState.getContentDesc().getRange().getMinOccurs()) {
 39  15
           throw new XmlException(XmlMessages.cmUnexpectedElement(aNamespace + "::" + aName, aHasLocation));
 40   
         }
 41  1513
         IUseState parent = myState.getParent();
 42  1513
         if (null == parent) {
 43  11
           throw new XmlException(XmlMessages.cmUnexpectedElement(aNamespace + "::" + aName, aHasLocation));
 44   
         }
 45  1502
         myState.reset();
 46  1502
         myState = parent;
 47   
       }
 48  3961
     } while (null == nextState);
 49   
 
 50  2459
     myState = nextState;
 51   
 
 52  2459
     mySubstitutionHead = nextState.getSubstitutionHead();
 53   
 
 54  2459
     return nextState.getElemDesc();
 55   
   }
 56   
 
 57   
   /**
 58   
    *
 59   
    */
 60  1857
   public void isValidEnd(IHasLocation aHasLocation) throws XmlException {
 61  1857
     for (IUseState s = myState; s != null; s = s.getParent()) {
 62  3488
       s.isValidEnd(aHasLocation);
 63   
     }
 64   
   }
 65   
 
 66  2459
   public IElemRefOrDecl getSubstitutionHead() {
 67  2459
     return mySubstitutionHead;
 68   
   }
 69   
 }
 70