001    package com.thetransactioncompany.util;
002    
003    
004    /**
005     * Thrown on a property parse exception. Intended to report missing or invalid
006     * properties.
007     *
008     * @see com.thetransactioncompany.util.PropertyRetriever
009     *
010     * @author Vladimir Dzhuvinov
011     */
012    public class PropertyParseException
013            extends Exception {
014            
015            
016            /**
017             * The key of the property that caused the exception, {@code null} if
018             * unknown or not applicable.
019             */
020            private final String propertyKey;
021            
022            
023            /**
024             * The value of the property that caused the exception, {@code null} if
025             * unknown or not applicable.
026             */
027            private final String propertyValue;
028            
029            
030            /**
031             * Creates a new property parse exception with the specified message.
032             *
033             * @param message The exception message.
034             */
035            public PropertyParseException(final String message) {
036            
037                    super(message);
038                    propertyKey = null;
039                    propertyValue = null;
040            }
041            
042            
043            /**
044             * Creates a new property parse exception with the specified message and
045             * property key.
046             *
047             * @param message     The exception message.
048             * @param propertyKey The key of the property that caused the exception,
049             *                    {@code null} if unknown or not applicable.
050             */
051            public PropertyParseException(final String message, final String propertyKey) {
052            
053                    super(message);
054                    this.propertyKey = propertyKey;
055                    propertyValue = null;
056            }
057            
058            
059            /**
060             * Creates a new property parse exception with the specified message,
061             * property key and property value.
062             *
063             * @param message       The exception message.
064             * @param propertyKey   The key of the property that caused the
065             *                      exception, {@code null} if unknown or not
066             *                      applicable.
067             * @param propertyValue The value of the property that caused the
068             *                      exception, {@code null} if unknown or not
069             *                      applicable.
070             */
071            public PropertyParseException(final String message, final String propertyKey, final String propertyValue) {
072            
073                    super(message);
074                    this.propertyKey = propertyKey;
075                    this.propertyValue = propertyValue;
076            }
077            
078            
079            /**
080             * Returns the key of the property that caused the exception, 
081             * {@code null} if unknown or not applicable.
082             * 
083             * @return The key of the offending property.
084             */
085            public String getPropertyKey() {
086            
087                    return propertyKey;
088            }
089            
090            
091            /**
092             * Returns the value of the property that caused the exception,
093             * {@code null} if unknown or not applicable.
094             *
095             * @return The value of the offending property.
096             */
097            public String getPropertyValue() {
098            
099                    return propertyValue;
100            }
101    }