Clover coverage report - Converter - 1.0
Coverage timestamp: Thu Jan 1 1970 10:00:00 EST
file stats: LOC: 137   Methods: 4
NCLOC: 63   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
AbstractConverter.java 0% 0% 0% 0%
coverage
 1   
 /*
 2   
  * Copyright (C) The Spice Group. All rights reserved.
 3   
  *
 4   
  * This software is published under the terms of the Spice
 5   
  * Software License version 1.1, a copy of which has been included
 6   
  * with this distribution in the LICENSE.txt file.
 7   
  */
 8   
 package org.codehaus.spice.converter;
 9   
 
 10   
 import org.codehaus.spice.salt.i18n.Resources;
 11   
 import org.codehaus.spice.salt.i18n.ResourceManager;
 12   
 
 13   
 /**
 14   
  * Instances of this interface are used to convert between different types.
 15   
  *
 16   
  * @author Peter Donald
 17   
  * @version $Revision: 1.1 $ $Date: 2003/12/02 08:37:56 $
 18   
  */
 19   
 public abstract class AbstractConverter
 20   
     implements Converter
 21   
 {
 22   
     /**
 23   
      * i18n resources accessor.
 24   
      */
 25   
     private static final Resources REZ =
 26   
         ResourceManager.getPackageResources( AbstractConverter.class );
 27   
 
 28   
     /**
 29   
      * The source type that converter can convert from.
 30   
      */
 31   
     private final Class m_source;
 32   
 
 33   
     /**
 34   
      * The destination type that converter can convert to.
 35   
      */
 36   
     private final Class m_destination;
 37   
 
 38   
     /**
 39   
      * The default value that is returned if can perform conversion.
 40   
      */
 41   
     private final Object m_defaultValue;
 42   
 
 43   
     /**
 44   
      * Constructor for a converter between types source and destination
 45   
      *
 46   
      * @param source the source type
 47   
      * @param destination the destination type
 48   
      */
 49  0
     protected AbstractConverter( final Class source, final Class destination )
 50   
     {
 51  0
         this( source, destination, null );
 52   
     }
 53   
 
 54   
     /**
 55   
      * Constructor for a converter between types source and destination
 56   
      * with a default value.
 57   
      *
 58   
      * @param source the source type
 59   
      * @param destination the destination type
 60   
      * @param defaultValue the default value
 61   
      */
 62  0
     protected AbstractConverter( final Class source,
 63   
                                  final Class destination,
 64   
                                  final Object defaultValue )
 65   
     {
 66  0
         m_source = source;
 67  0
         m_destination = destination;
 68  0
         m_defaultValue = defaultValue;
 69   
     }
 70   
 
 71   
     /**
 72   
      * Convert an object from original to destination types
 73   
      *
 74   
      * @param destination the destination type
 75   
      * @param original the original Object
 76   
      * @param context the context in which to convert
 77   
      * @return the converted object
 78   
      * @exception ConverterException if an error occurs
 79   
      */
 80  0
     public Object convert( final Class destination,
 81   
                            final Object original,
 82   
                            final Object context )
 83   
         throws ConverterException
 84   
     {
 85  0
         if( m_destination != destination )
 86   
         {
 87  0
             final String message =
 88   
                 REZ.format( "bad-destination.error", destination.getName(), m_destination );
 89  0
             throw new IllegalArgumentException( message );
 90   
         }
 91   
 
 92  0
         if( !m_source.isInstance( original ) )
 93   
         {
 94  0
             final String message =
 95   
                 REZ.format( "bad-instance.error", original, m_source.getName() );
 96  0
             throw new IllegalArgumentException( message );
 97   
         }
 98   
 
 99  0
         return convert( original, context );
 100   
     }
 101   
 
 102   
     /**
 103   
      * A helper method to throw an exception indicating that could
 104   
      * not perform conversion of specified object due to an exception.
 105   
      */
 106  0
     protected final Object noConvert( final Object value, final Throwable throwable )
 107   
         throws ConverterException
 108   
     {
 109  0
         if( null != m_defaultValue )
 110   
         {
 111  0
             return m_defaultValue;
 112   
         }
 113   
         else
 114   
         {
 115  0
             final String message =
 116   
                 REZ.format( "no-convert.error",
 117   
                             m_source.getName(),
 118   
                             m_destination.getName(),
 119   
                             value,
 120   
                             throwable );
 121  0
             throw new ConverterException( message );
 122   
         }
 123   
     }
 124   
 
 125   
     /**
 126   
      * Overide this in a particular converter to do the conversion.
 127   
      *
 128   
      * @param original the original Object
 129   
      * @param context the context in which to convert
 130   
      * @return the converted object
 131   
      * @throws ConverterException if an error occurs
 132   
      */
 133   
     protected abstract Object convert( Object original, Object context )
 134   
         throws ConverterException;
 135   
 }
 136   
 
 137