Class ReferenceEncryptedProperties

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.Object,​java.lang.Object>, EncryptedProperties

    public class ReferenceEncryptedProperties
    extends java.util.Properties
    implements EncryptedProperties
    Reference implementation of the EncryptedProperties interface. This implementation wraps a normal properties file, and creates surrogates for the getProperty and setProperty methods that perform encryption and decryption based on Encryptor.

    This implementation differs from DefaultEncryptedProperties in that it actually extends from java.util.Properties for applications that need an instance of that class. In order to do so, the getProperty and setProperty methods were modified to throw EncryptionRuntimeException instead of EncryptionException.

    Since:
    October 8, 2010
    Author:
    August Detlefsen (augustd at codemagi dot com) CodeMagi, Inc., kevin.w.wall@gmail.com
    See Also:
    EncryptedProperties, DefaultEncryptedProperties, Serialized Form
    • Field Summary

      • Fields inherited from class java.util.Properties

        defaults
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Enumeration elements()
      This method has been overridden to throw an UnsupportedOperationException
      java.util.Set entrySet()
      This method has been overridden to throw an UnsupportedOperationException
      java.lang.String getProperty​(java.lang.String key)
      Gets the property value from the encrypted store, decrypts it, and returns the plaintext value to the caller.
      java.lang.String getProperty​(java.lang.String key, java.lang.String defaultValue)
      void list​(java.io.PrintStream out)
      This method has been overridden to throw an UnsupportedOperationException
      void list​(java.io.PrintWriter out)
      This method has been overridden to throw an UnsupportedOperationException
      void load​(java.io.InputStream in)
      Reads a property list (key and element pairs) from the input stream.
      void load​(java.io.Reader in)
      For JDK 1.5 compatibility, this method has been overridden convert the Reader into an InputStream and call the superclass constructor.
      java.lang.Object put​(java.lang.Object key, java.lang.Object value)
      This method has been overridden to only accept Strings for key and value, and to encrypt those Strings before storing them.
      java.lang.String setProperty​(java.lang.String key, java.lang.String value)
      Encrypts the plaintext property value and stores the ciphertext value in the encrypted store.
      java.lang.String toString()
      This method has been overridden to not print out the keys and values stored in this properties file.
      java.util.Collection values()
      This method has been overridden to throw an UnsupportedOperationException
      • Methods inherited from class java.util.Properties

        clear, clone, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, equals, forEach, get, getOrDefault, hashCode, isEmpty, keys, keySet, loadFromXML, merge, propertyNames, putAll, putIfAbsent, rehash, remove, remove, replace, replace, replaceAll, save, size, store, store, storeToXML, storeToXML, storeToXML, stringPropertyNames
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • ReferenceEncryptedProperties

        public ReferenceEncryptedProperties()
        Instantiates a new encrypted properties.
      • ReferenceEncryptedProperties

        public ReferenceEncryptedProperties​(java.util.Properties defaults)
    • Method Detail

      • getProperty

        public java.lang.String getProperty​(java.lang.String key)
                                     throws EncryptionRuntimeException
        Gets the property value from the encrypted store, decrypts it, and returns the plaintext value to the caller.
        Specified by:
        getProperty in interface EncryptedProperties
        Overrides:
        getProperty in class java.util.Properties
        Parameters:
        key - the name of the property to get
        Returns:
        The decrypted property value. null if the key is not set.
        Throws:
        EncryptionRuntimeException - Thrown if decryption fails.
      • getProperty

        public java.lang.String getProperty​(java.lang.String key,
                                            java.lang.String defaultValue)
                                     throws EncryptionRuntimeException
        Overrides:
        getProperty in class java.util.Properties
        Throws:
        EncryptionRuntimeException - Thrown if decryption fails.
      • setProperty

        public java.lang.String setProperty​(java.lang.String key,
                                            java.lang.String value)
                                     throws EncryptionRuntimeException
        Encrypts the plaintext property value and stores the ciphertext value in the encrypted store.
        Specified by:
        setProperty in interface EncryptedProperties
        Overrides:
        setProperty in class java.util.Properties
        Parameters:
        key - the name of the property to set
        value - the value of the property to set
        Returns:
        the previously encrypted property value for the specified key, or null if it did not have one.
        Throws:
        EncryptionRuntimeException - Thrown if encryption fails.
      • load

        public void load​(java.io.InputStream in)
                  throws java.io.IOException
        Reads a property list (key and element pairs) from the input stream.
        Specified by:
        load in interface EncryptedProperties
        Overrides:
        load in class java.util.Properties
        Parameters:
        in - the input stream that contains the properties file
        Throws:
        java.io.IOException - Thrown if input stream invalid or does not correspond to Java properties file format.
      • load

        public void load​(java.io.Reader in)
                  throws java.io.IOException
        For JDK 1.5 compatibility, this method has been overridden convert the Reader into an InputStream and call the superclass constructor.
        Overrides:
        load in class java.util.Properties
        Throws:
        java.io.IOException - Thrown if Reader input stream invalid or does not correspond to Java properties file format.
      • list

        public void list​(java.io.PrintStream out)
        This method has been overridden to throw an UnsupportedOperationException
        Overrides:
        list in class java.util.Properties
      • list

        public void list​(java.io.PrintWriter out)
        This method has been overridden to throw an UnsupportedOperationException
        Overrides:
        list in class java.util.Properties
      • values

        public java.util.Collection values()
        This method has been overridden to throw an UnsupportedOperationException
        Specified by:
        values in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        values in class java.util.Properties
      • entrySet

        public java.util.Set entrySet()
        This method has been overridden to throw an UnsupportedOperationException
        Specified by:
        entrySet in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        entrySet in class java.util.Properties
      • elements

        public java.util.Enumeration elements()
        This method has been overridden to throw an UnsupportedOperationException
        Overrides:
        elements in class java.util.Properties
      • put

        public java.lang.Object put​(java.lang.Object key,
                                    java.lang.Object value)
        This method has been overridden to only accept Strings for key and value, and to encrypt those Strings before storing them. Outside classes should always use setProperty to add values to the Properties map. If an outside class does erroneously call this method with non-String parameters an IllegalArgumentException will be thrown.
        Specified by:
        put in interface java.util.Map<java.lang.Object,​java.lang.Object>
        Overrides:
        put in class java.util.Properties
        Parameters:
        key - A String key to add
        value - A String value to add
        Returns:
        The old value associated with the specified key, or null if the key did not exist.
      • toString

        public java.lang.String toString()
        This method has been overridden to not print out the keys and values stored in this properties file.
        Overrides:
        toString in class java.util.Properties
        Returns:
        The minimal String representation of this class, as per java.lang.Object.