Clover coverage report - XJavaDoc - 1.1
Coverage timestamp: Mon Oct 4 2004 23:49:51 BST
file stats: LOC: 122   Methods: 6
NCLOC: 71   Classes: 1
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
XTagFactory.java 75% 72% 83.3% 74.4%
coverage coverage
 1   
 /*
 2   
  * Copyright (c) 2001-2003 The XDoclet team
 3   
  * All rights reserved.
 4   
  */
 5   
 package xjavadoc;
 6   
 
 7   
 import java.util.HashMap;
 8   
 import java.util.Map;
 9   
 import java.util.StringTokenizer;
 10   
 
 11   
 /**
 12   
  * Creates XTag instances.
 13   
  *
 14   
  * @author    Aslak Hellesøy
 15   
  * @created   10. februar 2002
 16   
  */
 17   
 public final class XTagFactory
 18   
 {
 19   
 
 20   
     /**
 21   
      * Maps tag name to XTag class.
 22   
      */
 23   
     private final Map _tagClasses = new HashMap();
 24   
     private boolean _isValidating = false;
 25   
 
 26  73
     public XTagFactory() {
 27   
         // ignore standard tags. See:
 28   
         // http://java.sun.com/j2se/1.4.1/docs/tooldocs/windows/javadoc.html#javadoctags
 29  73
         setIgnoredTags( "author,deprecated,exception,param,return,see,serial,serialData,serialField,since,throws,version" );
 30   
     }
 31   
 
 32  336
     public boolean isValidating()
 33   
     {
 34  336
         return _isValidating;
 35   
     }
 36   
 
 37  0
     public void setValidating( boolean isValidating )
 38   
     {
 39  0
         _isValidating = isValidating;
 40   
     }
 41   
 
 42   
     /**
 43   
      * Set the name of the tags that shouldn't be validated against.
 44   
      *
 45   
      * @param tags
 46   
      */
 47  73
     public void setIgnoredTags( String tags )
 48   
     {
 49  73
         StringTokenizer st = new StringTokenizer( tags, "," );
 50   
 
 51  73
         while( st.hasMoreTokens() )
 52   
         {
 53  876
             registerTagClass( st.nextToken(), DefaultXTag.class );
 54   
         }
 55   
     }
 56   
 
 57   
     /**
 58   
      * Creates a new XTag. If a special tag class has been previously registeres,
 59   
      * an instance of the corresponding class will be returned. This allows for
 60   
      * special tag implementations.
 61   
      *
 62   
      * @param tagName                  name of the tag, without the '@'
 63   
      * @param text                     content of the tag. Will be parsed into
 64   
      *      attributes.
 65   
      * @param doc
 66   
      * @param lineNumber
 67   
      * @return                         an instance of XTag
 68   
      * @exception UnknownTagException
 69   
      * @throws TagValidationException  if validation is activated and an unknown
 70   
      *      tag was encountered.
 71   
      */
 72  356
     public XTag createTag( String tagName, String text, XDoc doc, int lineNumber ) throws UnknownTagException
 73   
     {
 74  356
         tagName = XDoc.dotted( tagName );
 75   
 
 76   
         // Let's see if there is a custom class for that tag
 77  356
         Class tagClass = ( Class ) _tagClasses.get( tagName );
 78  356
         DefaultXTag tag;
 79   
 
 80  356
         if( tagClass != null )
 81   
         {
 82  331
             try
 83   
             {
 84  331
                 tag = ( DefaultXTag ) tagClass.newInstance();
 85   
             }
 86   
             catch( InstantiationException e )
 87   
             {
 88  0
                 e.printStackTrace();
 89  0
                 throw new IllegalStateException( e.getMessage() );
 90   
             }
 91   
             catch( IllegalAccessException e )
 92   
             {
 93  0
                 e.printStackTrace();
 94  0
                 throw new IllegalStateException( e.getMessage() );
 95   
             }
 96   
         }
 97   
         else
 98   
         {
 99  25
             tag = new DefaultXTag();
 100   
         }
 101  356
         tag.init( tagName, text, doc, lineNumber );
 102   
 
 103   
         // Throw validation ex if validation is on and the tag is unknown
 104  356
         if( _isValidating && ( tagClass == null ) )
 105   
         {
 106  0
             throw new UnknownTagException( tag );
 107   
         }
 108  356
         return tag;
 109   
     }
 110   
 
 111  876
     public void registerTagClass( String tagName, Class tagClass )
 112   
     {
 113  876
         Class old = (Class) _tagClasses.get( XDoc.dotted(tagName) );
 114  876
         if( old != null ) {
 115  0
             throw new IllegalStateException( "The tag @" + XDoc.dotted(tagName) +
 116   
                     " has already been mapped to " + old.getName() +
 117   
                     ". Can't reregister it to " + tagClass.getName());
 118   
         }
 119  876
         _tagClasses.put( XDoc.dotted( tagName ), tagClass );
 120   
     }
 121   
 }
 122