Coverage Report - de.smartics.properties.api.core.domain.PropertyValueConversionException
 
Classes in this File Line Coverage Branch Coverage Complexity
PropertyValueConversionException
0%
0/14
0%
0/6
1,6
 
 1  
 /*
 2  
  * Copyright 2012-2013 smartics, Kronseder & Reiner GmbH
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package de.smartics.properties.api.core.domain;
 17  
 
 18  
 import java.io.Serializable;
 19  
 
 20  
 
 21  
 
 22  
 /**
 23  
  * Signals that the value does not match the given constraints.
 24  
  */
 25  
 public class PropertyValueConversionException extends
 26  
     PropertyDescriptorException
 27  
 {
 28  
   // ********************************* Fields *********************************
 29  
 
 30  
   // --- constants ------------------------------------------------------------
 31  
 
 32  
   /**
 33  
    * The class version identifier.
 34  
    * <p>
 35  
    * The value of this constant is {@value}.
 36  
    */
 37  
   private static final long serialVersionUID = 1L;
 38  
 
 39  
   // --- members --------------------------------------------------------------
 40  
 
 41  
   /**
 42  
    * The value of the property that does not meet the constraints.
 43  
    *
 44  
    * @serial
 45  
    */
 46  
   private final Serializable value;
 47  
 
 48  
   // ****************************** Initializer *******************************
 49  
 
 50  
   // ****************************** Constructors ******************************
 51  
 
 52  
   /**
 53  
    * Convenience constructor with no cause.
 54  
    *
 55  
    * @param propertyDescriptor the key descriptor the property raising the
 56  
    *          exception.
 57  
    * @param value the value of the property that does not meet the constraints.
 58  
    *          If the value is not serializable, its string representation is
 59  
    *          stored.
 60  
    */
 61  
   public PropertyValueConversionException(
 62  
       final PropertyDescriptor propertyDescriptor, final Object value)
 63  
   {
 64  0
     this(null, propertyDescriptor, value);
 65  0
   }
 66  
 
 67  
   /**
 68  
    * Default constructor.
 69  
    *
 70  
    * @param cause the cause (which is saved for later retrieval by the
 71  
    *          {@link #getCause()} method). (A <tt>null</tt> value is permitted,
 72  
    *          and indicates that the cause is nonexistent or unknown.)
 73  
    * @param propertyDescriptor the descriptor of the property raising the
 74  
    *          exception.
 75  
    * @param value the value of the property that cannot be converted. If the
 76  
    *          value is not serializable, its string representation is stored.
 77  
    */
 78  
   public PropertyValueConversionException(final Throwable cause,
 79  
       final PropertyDescriptor propertyDescriptor, final Object value)
 80  
   {
 81  0
     this(createMessage(cause, propertyDescriptor, value), cause,
 82  
         propertyDescriptor, value);
 83  0
   }
 84  
 
 85  
   /**
 86  
    * Internal constructor to provide a custom message.
 87  
    *
 88  
    * @param message the detail message (which is saved for later retrieval by
 89  
    *          the {@link #getMessage()} method).
 90  
    * @param cause the cause (which is saved for later retrieval by the
 91  
    *          {@link #getCause()} method). (A <tt>null</tt> value is permitted,
 92  
    *          and indicates that the cause is nonexistent or unknown.)
 93  
    * @param propertyDescriptor the descriptor of the property raising the
 94  
    *          exception.
 95  
    * @param value the value of the property that cannot be converted. If the
 96  
    *          value is not serializable, its string representation is stored.
 97  
    */
 98  
   protected PropertyValueConversionException(final String message,
 99  
       final Throwable cause, final PropertyDescriptor propertyDescriptor,
 100  
       final Object value)
 101  
   {
 102  0
     super(message, cause, propertyDescriptor);
 103  
 
 104  0
     this.value =
 105  
         value instanceof Serializable ? (Serializable) value : String
 106  
             .valueOf(value);
 107  0
   }
 108  
 
 109  
   // ****************************** Inner Classes *****************************
 110  
 
 111  
   // ********************************* Methods ********************************
 112  
 
 113  
   // --- init -----------------------------------------------------------------
 114  
 
 115  
   private static String createMessage(final Throwable cause,
 116  
       final PropertyDescriptor propertyDescriptor, final Object value)
 117  
   {
 118  0
     final StringBuilder buffer = new StringBuilder();
 119  
 
 120  0
     buffer.append("Conversion failed for value '"
 121  
                   + value
 122  
                   + '\''
 123  
                   + (value != null ? " (" + value.getClass().getSimpleName()
 124  
                                      + ')' : "") + " for property '"
 125  
                   + propertyDescriptor.getKey() + "'");
 126  0
     if (cause != null)
 127  
     {
 128  0
       buffer.append(": ").append(cause.getMessage());
 129  
     }
 130  
     else
 131  
     {
 132  0
       buffer.append('.');
 133  
     }
 134  
 
 135  0
     return buffer.toString();
 136  
   }
 137  
 
 138  
   // --- get&set --------------------------------------------------------------
 139  
 
 140  
   /**
 141  
    * Returns the value of the property that does not meet the constraints.
 142  
    *
 143  
    * @return the value of the property that does not meet the constraints.
 144  
    */
 145  
   public final Serializable getValue()
 146  
   {
 147  0
     return value;
 148  
   }
 149  
 
 150  
   // --- business -------------------------------------------------------------
 151  
 
 152  
   // --- object basics --------------------------------------------------------
 153  
 
 154  
 }