Clover coverage report - Ant Coverage
Coverage timestamp: Tue Apr 8 2003 20:43:55 EST
file stats: LOC: 133   Methods: 3
NCLOC: 42   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
Jasper41Mangler.java 100% 96% 66.7% 95%
 1   
 /*
 2   
  *  The Apache Software License, Version 1.1
 3   
  *
 4   
  *  Copyright (c) 2003 The Apache Software Foundation.  All rights
 5   
  *  reserved.
 6   
  *
 7   
  *  Redistribution and use in source and binary forms, with or without
 8   
  *  modification, are permitted provided that the following conditions
 9   
  *  are met:
 10   
  *
 11   
  *  1. Redistributions of source code must retain the above copyright
 12   
  *  notice, this list of conditions and the following disclaimer.
 13   
  *
 14   
  *  2. Redistributions in binary form must reproduce the above copyright
 15   
  *  notice, this list of conditions and the following disclaimer in
 16   
  *  the documentation and/or other materials provided with the
 17   
  *  distribution.
 18   
  *
 19   
  *  3. The end-user documentation included with the redistribution, if
 20   
  *  any, must include the following acknowlegement:
 21   
  *  "This product includes software developed by the
 22   
  *  Apache Software Foundation (http://www.apache.org/)."
 23   
  *  Alternately, this acknowlegement may appear in the software itself,
 24   
  *  if and wherever such third-party acknowlegements normally appear.
 25   
  *
 26   
  *  4. The names "Ant" and "Apache Software
 27   
  *  Foundation" must not be used to endorse or promote products derived
 28   
  *  from this software without prior written permission. For written
 29   
  *  permission, please contact apache@apache.org.
 30   
  *
 31   
  *  5. Products derived from this software may not be called "Apache"
 32   
  *  nor may "Apache" appear in their names without prior written
 33   
  *  permission of the Apache Group.
 34   
  *
 35   
  *  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 36   
  *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 37   
  *  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 38   
  *  DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 39   
  *  ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 40   
  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 41   
  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 42   
  *  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 43   
  *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 44   
  *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 45   
  *  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 46   
  *  SUCH DAMAGE.
 47   
  *  ====================================================================
 48   
  *
 49   
  *  This software consists of voluntary contributions made by many
 50   
  *  individuals on behalf of the Apache Software Foundation.  For more
 51   
  *  information on the Apache Software Foundation, please see
 52   
  *  <http://www.apache.org/>.
 53   
  */
 54   
 
 55   
 
 56   
 package org.apache.tools.ant.taskdefs.optional.jsp;
 57   
 
 58   
 import java.io.File;
 59   
 
 60   
 /**
 61   
  * this class implements the name mangling rules of the jasper in tomcat4.1.x
 62   
  * which is likely to remain for some time
 63   
  * @see org.apache.jasper.JspCompilationContext
 64   
  * @author Anil K. Vijendran
 65   
  * @author Harish Prabandham
 66   
  * @author Pierre Delisle
 67   
  * @author Costin Manolache
 68   
  * @author Steve Loughran (copied from JspCompilationContext)
 69   
  */
 70   
 public class Jasper41Mangler implements JspMangler {
 71   
 
 72   
 
 73   
     /**
 74   
      * map from a jsp file to a java filename; does not do packages
 75   
      *
 76   
      * @param jspFile file
 77   
      * @return java filename
 78   
      */
 79  10
     public String mapJspToJavaName(File jspFile) {
 80  10
         String jspUri = jspFile.getAbsolutePath();
 81  10
         int start = jspUri.lastIndexOf(File.separatorChar) + 1;
 82  10
         int end = jspUri.length();
 83  10
         StringBuffer modifiedClassName;
 84  10
         modifiedClassName = new StringBuffer(jspUri.length() - start);
 85  10
         if (!Character.isJavaIdentifierStart(jspUri.charAt(start)) ||
 86   
                 jspUri.charAt(start) == '_') {
 87   
             // If the first char is not a start of Java identifier or is _
 88   
             // prepend a '_'.
 89  4
             modifiedClassName.append('_');
 90   
         }
 91  10
         for (int i = start; i < end; i++) {
 92  96
             char ch = jspUri.charAt(i);
 93  96
             if (Character.isJavaIdentifierPart(ch)) {
 94  84
                 modifiedClassName.append(ch);
 95  12
             } else if (ch == '.') {
 96  10
                 modifiedClassName.append('_');
 97   
             } else {
 98  2
                 modifiedClassName.append(mangleChar(ch));
 99   
             }
 100   
         }
 101  10
         return modifiedClassName.toString();
 102   
     }
 103   
 
 104   
     /**
 105   
      * Mangle the specified character to create a legal Java class name.
 106   
      */
 107  2
     private static final String mangleChar(char ch) {
 108   
 
 109  2
         String s = Integer.toHexString(ch);
 110  2
         int nzeros = 5 - s.length();
 111  2
         char[] result = new char[6];
 112  2
         result[0] = '_';
 113  2
         for (int i = 1; i <= nzeros; i++) {
 114  6
             result[i] = '0';
 115   
         }
 116  2
         for (int i = nzeros + 1, j = 0; i < 6; i++, j++) {
 117  4
             result[i] = s.charAt(j);
 118   
         }
 119  2
         return new String(result);
 120   
     }
 121   
 
 122   
 
 123   
     /**
 124   
      * taking in the substring representing the path relative to the source dir
 125   
      * return a new string representing the destination path
 126   
      * @todo
 127   
      */
 128  0
     public String mapPath(String path) {
 129  0
         return null;
 130   
     }
 131   
 
 132   
 }
 133