Clover coverage report - classworlds - 1.1-alpha-1
Coverage timestamp: Sun Sep 19 2004 14:08:44 EDT
file stats: LOC: 180   Methods: 4
NCLOC: 79   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
Handler.java 80% 85% 75% 82.4%
coverage coverage
 1   
 package org.codehaus.classworlds.uberjar.protocol.jar;
 2   
 
 3   
 /*
 4   
  $Id: Handler.java,v 1.1.1.1 2004/07/01 13:59:19 jvanzyl Exp $
 5   
 
 6   
  Copyright 2002 (C) The Werken Company. All Rights Reserved.
 7   
  
 8   
  Redistribution and use of this software and associated documentation
 9   
  ("Software"), with or without modification, are permitted provided
 10   
  that the following conditions are met:
 11   
 
 12   
  1. Redistributions of source code must retain copyright
 13   
     statements and notices.  Redistributions must also contain a
 14   
     copy of this document.
 15   
  
 16   
  2. Redistributions in binary form must reproduce the
 17   
     above copyright notice, this list of conditions and the
 18   
     following disclaimer in the documentation and/or other
 19   
     materials provided with the distribution.
 20   
  
 21   
  3. The name "classworlds" must not be used to endorse or promote
 22   
     products derived from this Software without prior written
 23   
     permission of The Werken Company.  For written permission,
 24   
     please contact bob@werken.com.
 25   
  
 26   
  4. Products derived from this Software may not be called "classworlds"
 27   
     nor may "classworlds" appear in their names without prior written
 28   
     permission of The Werken Company. "classworlds" is a registered
 29   
     trademark of The Werken Company.
 30   
  
 31   
  5. Due credit should be given to The Werken Company.
 32   
     (http://classworlds.werken.com/).
 33   
  
 34   
  THIS SOFTWARE IS PROVIDED BY THE WERKEN COMPANY AND CONTRIBUTORS
 35   
  ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
 36   
  NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 37   
  FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
 38   
  THE WERKEN COMPANY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 39   
  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 40   
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 41   
  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 42   
  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 43   
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 44   
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 45   
  OF THE POSSIBILITY OF SUCH DAMAGE.
 46   
  
 47   
  */
 48   
 
 49   
 import java.io.IOException;
 50   
 import java.net.URL;
 51   
 import java.net.URLConnection;
 52   
 import java.net.URLStreamHandler;
 53   
 
 54   
 /**
 55   
  * <code>URLStreamHandler</code> for <code>jar:</code> protocol <code>URL</code>s.
 56   
  *
 57   
  * @author <a href="mailto:bob@eng.werken.com">bob mcwhirter</a>
 58   
  * @version $Id: Handler.java,v 1.1.1.1 2004/07/01 13:59:19 jvanzyl Exp $
 59   
  */
 60   
 public class Handler
 61   
     extends URLStreamHandler
 62   
 {
 63   
     // ----------------------------------------------------------------------
 64   
     //     Class members
 65   
     // ----------------------------------------------------------------------
 66   
 
 67   
     /**
 68   
      * Singleton instance.
 69   
      */
 70   
     private static final Handler INSTANCE = new Handler();
 71   
 
 72   
     // ----------------------------------------------------------------------
 73   
     //     Class methods
 74   
     // ----------------------------------------------------------------------
 75   
 
 76   
     /**
 77   
      * Retrieve the singleton instance.
 78   
      *
 79   
      * @return The singleton instance.
 80   
      */
 81  0
     public static Handler getInstance()
 82   
     {
 83  0
         return INSTANCE;
 84   
     }
 85   
 
 86   
     // ----------------------------------------------------------------------
 87   
     //     Constructors
 88   
     // ----------------------------------------------------------------------
 89   
 
 90   
 
 91   
     /**
 92   
      * Construct.
 93   
      */
 94  12
     public Handler()
 95   
     {
 96   
         // intentionally left blank
 97   
     }
 98   
 
 99   
     // ----------------------------------------------------------------------
 100   
     //     Instance methods
 101   
     // ----------------------------------------------------------------------
 102   
 
 103   
     /**
 104   
      * @see java.net.URLStreamHandler
 105   
      */
 106  22
     public URLConnection openConnection( URL url )
 107   
         throws IOException
 108   
     {
 109  22
         return new JarUrlConnection( url );
 110   
     }
 111   
 
 112   
     /**
 113   
      * @see java.net.URLStreamHandler
 114   
      */
 115  128
     public void parseURL( URL url,
 116   
                           String spec,
 117   
                           int start,
 118   
                           int limit )
 119   
     {
 120  128
         String specPath = spec.substring( start,
 121   
                                           limit );
 122   
 
 123  128
         String urlPath = null;
 124   
 
 125  128
         if ( specPath.charAt( 0 ) == '/' )
 126   
         {
 127  12
             urlPath = specPath;
 128   
         }
 129  116
         else if ( specPath.charAt( 0 ) == '!' )
 130   
         {
 131  4
             String relPath = url.getFile();
 132   
 
 133  4
             int bangLoc = relPath.lastIndexOf( "!" );
 134   
 
 135  4
             if ( bangLoc < 0 )
 136   
             {
 137  0
                 urlPath = relPath + specPath;
 138   
             }
 139   
             else
 140   
             {
 141  4
                 urlPath = relPath.substring( 0,
 142   
                                              bangLoc ) + specPath;
 143   
             }
 144   
         }
 145   
         else
 146   
         {
 147  112
             String relPath = url.getFile();
 148   
 
 149  112
             if ( relPath != null )
 150   
             {
 151  2
                 int lastSlashLoc = relPath.lastIndexOf( "/" );
 152   
 
 153  2
                 if ( lastSlashLoc < 0 )
 154   
                 {
 155  0
                     urlPath = "/" + specPath;
 156   
                 }
 157   
                 else
 158   
                 {
 159  2
                     urlPath = relPath.substring( 0,
 160   
                                                  lastSlashLoc + 1 ) + specPath;
 161   
                 }
 162   
             }
 163   
             else
 164   
             {
 165  110
                 urlPath = specPath;
 166   
             }
 167   
         }
 168   
 
 169  128
         setURL( url,
 170   
                 "jar",
 171   
                 null,
 172   
                 0,
 173   
                 null,
 174   
                 null,
 175   
                 urlPath,
 176   
                 null,
 177   
                 null );
 178   
     }
 179   
 }
 180