Coverage Report - org.mule.transformer.simple.StringToNumber
 
Classes in this File Line Coverage Branch Coverage Complexity
StringToNumber
0%
0/23
0%
0/6
0
 
 1  
 /*
 2  
  * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
 3  
  * The software in this package is published under the terms of the CPAL v1.0
 4  
  * license, a copy of which has been included with this distribution in the
 5  
  * LICENSE.txt file.
 6  
  */
 7  
 package org.mule.transformer.simple;
 8  
 
 9  
 import org.mule.api.transformer.DataType;
 10  
 import org.mule.api.transformer.DiscoverableTransformer;
 11  
 import org.mule.api.transformer.TransformerException;
 12  
 import org.mule.transformer.AbstractTransformer;
 13  
 import org.mule.transformer.types.DataTypeFactory;
 14  
 import org.mule.transformer.types.SimpleDataType;
 15  
 import org.mule.util.NumberUtils;
 16  
 
 17  
 import java.text.NumberFormat;
 18  
 
 19  
 /**
 20  
  * <code>StringToNumber</code> converts a String to a Number. A NumberFormat is used
 21  
  * if one is provided.
 22  
  */
 23  
 public class StringToNumber extends AbstractTransformer implements DiscoverableTransformer
 24  
 {
 25  
 
 26  
     private NumberFormat numberFormat;
 27  
 
 28  
     /**
 29  
      * Give core transformers a slighty higher priority
 30  
      */
 31  0
     private int priorityWeighting = DiscoverableTransformer.DEFAULT_PRIORITY_WEIGHTING + 1;
 32  
 
 33  
     public StringToNumber()
 34  0
     {
 35  0
         registerSourceType(new SimpleDataType<Object>(String.class));
 36  0
         setReturnDataType(DataTypeFactory.create(Number.class));
 37  0
     }
 38  
 
 39  
     public StringToNumber(NumberFormat numberFormat)
 40  
     {
 41  0
         this();
 42  0
         this.numberFormat = numberFormat;
 43  0
     }
 44  
 
 45  
     @SuppressWarnings("unchecked")
 46  
     @Override
 47  
     public Object doTransform(Object src, String encoding) throws TransformerException
 48  
     {
 49  0
         if (src == null)
 50  
         {
 51  0
             return null;
 52  
         }
 53  
         else
 54  
         {
 55  0
             if (numberFormat != null)
 56  
             {
 57  
                 try
 58  
                 {
 59  0
                     return NumberUtils.convertNumberToTargetClass(numberFormat.parse((String) src),
 60  
                         getReturnClass());
 61  
                 }
 62  0
                 catch (Exception e)
 63  
                 {
 64  0
                     throw new TransformerException(this, e);
 65  
                 }
 66  
             }
 67  
             else
 68  
             {
 69  0
                 return NumberUtils.parseNumber((String) src, getReturnClass());
 70  
             }
 71  
         }
 72  
     }
 73  
 
 74  
     @SuppressWarnings({"unchecked"})
 75  
     @Override
 76  
     public Class<? extends Number> getReturnClass()
 77  
     {
 78  0
         return (Class<Number>) super.getReturnDataType().getType();
 79  
     }
 80  
 
 81  
     @Override
 82  
     public void setReturnDataType(DataType<?> type)
 83  
     {
 84  0
         if (!Number.class.isAssignableFrom(type.getType()))
 85  
         {
 86  0
             throw new IllegalArgumentException("This transformer only supports Number return types.");
 87  
         }
 88  
         else
 89  
         {
 90  0
             super.setReturnDataType(type);
 91  
         }
 92  0
     }
 93  
 
 94  
     public int getPriorityWeighting()
 95  
     {
 96  0
         return priorityWeighting;
 97  
     }
 98  
 
 99  
     public void setPriorityWeighting(int priorityWeighting)
 100  
     {
 101  0
         this.priorityWeighting = priorityWeighting;
 102  0
     }
 103  
 
 104  
 }