Class Properties

java.lang.Object
java.util.AbstractMap<String,String>
org.apache.felix.utils.properties.Properties
All Implemented Interfaces:
Map<String,String>

public class Properties extends AbstractMap<String,String>

Enhancement of the standard Properties managing the maintain of comments, etc.

  • Field Details

    • COMMENT_CHARS

      private static final String COMMENT_CHARS
      Constant for the supported comment characters.
      See Also:
    • SEPARATORS

      private static final char[] SEPARATORS
      The list of possible key/value separators
    • WHITE_SPACE

      private static final char[] WHITE_SPACE
      The white space characters used as key/value separators.
    • DEFAULT_ENCODING

      static final String DEFAULT_ENCODING
      The default encoding (ISO-8859-1 as specified by http://java.sun.com/j2se/1.5.0/docs/api/java/util/Properties.html)
      See Also:
    • LINE_SEPARATOR

      private static final String LINE_SEPARATOR
      Constant for the platform specific line separator.
    • HEX_RADIX

      private static final int HEX_RADIX
      Constant for the radix of hex numbers.
      See Also:
    • UNICODE_LEN

      private static final int UNICODE_LEN
      Constant for the length of a unicode literal.
      See Also:
    • storage

      private final Map<String,String> storage
    • layout

      private final Map<String,Properties.Layout> layout
    • location

      private File location
    • callback

    • substitute

      boolean substitute
    • typed

      boolean typed
  • Constructor Details

  • Method Details

    • load

      public void load(File location) throws IOException
      Throws:
      IOException
    • load

      public void load(URL location) throws IOException
      Throws:
      IOException
    • load

      public void load(InputStream is) throws IOException
      Throws:
      IOException
    • load

      public void load(Reader reader) throws IOException
      Throws:
      IOException
    • save

      public void save() throws IOException
      Throws:
      IOException
    • save

      public void save(File location) throws IOException
      Throws:
      IOException
    • save

      public void save(OutputStream os) throws IOException
      Throws:
      IOException
    • save

      public void save(Writer writer) throws IOException
      Throws:
      IOException
    • store

      public void store(OutputStream os, String comment) throws IOException
      Store a properties into a output stream, preserving comments, special character, etc. This method is mainly to be compatible with the java.util.Properties class.
      Parameters:
      os - an output stream.
      comment - this parameter is ignored as this Properties
      Throws:
      IOException - If storing fails
    • getProperty

      public String getProperty(String key)
      Searches for the property with the specified key in this property list.
      Parameters:
      key - the property key.
      Returns:
      the value in this property list with the specified key value.
    • getProperty

      public String getProperty(String key, String defaultValue)
      Searches for the property with the specified key in this property list. If the key is not found in this property list, the default property list, and its defaults, recursively, are then checked. The method returns the default value argument if the property is not found.
      Parameters:
      key - the property key.
      defaultValue - a default value.
      Returns:
      The property value of the default value
    • entrySet

      public Set<Map.Entry<String,String>> entrySet()
      Specified by:
      entrySet in interface Map<String,String>
      Specified by:
      entrySet in class AbstractMap<String,String>
    • propertyNames

      public Enumeration<?> propertyNames()
      Returns an enumeration of all the keys in this property list, including distinct keys in the default property list if a key of the same name has not already been found from the main properties list.
      Returns:
      an enumeration of all the keys in this property list, including the keys in the default property list.
    • setProperty

      public Object setProperty(String key, String value)
      Calls the map method put. Provided for parallelism with the getProperty method. Enforces use of strings for property keys and values. The value returned is the result of the map call to put.
      Parameters:
      key - the key to be placed into this property list.
      value - the value corresponding to the key.
      Returns:
      the previous value of the specified key in this property list, or null if it did not have one.
    • put

      public String put(String key, String value)
      Specified by:
      put in interface Map<String,String>
      Overrides:
      put in class AbstractMap<String,String>
    • putAllSubstituted

      void putAllSubstituted(Map<? extends String,? extends String> m)
    • put

      public String put(String key, List<String> commentLines, List<String> valueLines)
    • put

      public String put(String key, List<String> commentLines, String value)
    • put

      public String put(String key, String comment, String value)
    • update

      public boolean update(Map<String,String> props)
    • update

      public boolean update(Properties properties)
    • getRaw

      public List<String> getRaw(String key)
    • getComments

      public List<String> getComments(String key)
    • remove

      public String remove(Object key)
      Specified by:
      remove in interface Map<String,String>
      Overrides:
      remove in class AbstractMap<String,String>
    • clear

      public void clear()
      Specified by:
      clear in interface Map<String,String>
      Overrides:
      clear in class AbstractMap<String,String>
    • getHeader

      public List<String> getHeader()
      Return the comment header.
      Returns:
      the comment header
    • setHeader

      public void setHeader(List<String> header)
      Set the comment header.
      Parameters:
      header - the header to use
    • getFooter

      public List<String> getFooter()
      Return the comment footer.
      Returns:
      the comment footer
    • setFooter

      public void setFooter(List<String> footer)
      Set the comment footer.
      Parameters:
      footer - the footer to use
    • loadLayout

      protected void loadLayout(Reader in, boolean maybeTyped) throws IOException
      Reads a properties file and stores its internal structure. The found properties will be added to the associated configuration object.
      Parameters:
      in - the reader to the properties file
      Throws:
      IOException - if an error occurs
    • substitute

      public void substitute()
    • substitute

      public void substitute(InterpolationHelper.SubstitutionCallback callback)
    • saveLayout

      protected void saveLayout(Writer out, boolean typed) throws IOException
      Writes the properties file to the given writer, preserving as much of its structure as possible.
      Parameters:
      out - the writer
      Throws:
      IOException - if an error occurs
    • checkHeaderComment

      private int checkHeaderComment(List<String> commentLines)
      Checks if parts of the passed in comment can be used as header comment. This method checks whether a header comment can be defined (i.e. whether this is the first comment in the loaded file). If this is the case, it is searched for the lates blank line. This line will mark the end of the header comment. The return value is the index of the first line in the passed in list, which does not belong to the header comment.
      Parameters:
      commentLines - the comment lines
      Returns:
      the index of the next line after the header comment
    • isCommentLine

      static boolean isCommentLine(String line)
      Tests whether a line is a comment, i.e. whether it starts with a comment character.
      Parameters:
      line - the line
      Returns:
      a flag if this is a comment line
    • unescapeJava

      protected static String unescapeJava(String str)

      Unescapes any Java literals found in the String to a Writer.

      This is a slightly modified version of the StringEscapeUtils.unescapeJava() function in commons-lang that doesn't drop escaped separators (i.e '\,').
      Parameters:
      str - the String to unescape, may be null
      Returns:
      the processed string
      Throws:
      IllegalArgumentException - if the Writer is null
    • escapeJava

      protected static String escapeJava(String str)

      Escapes the characters in a String using Java String rules.

      Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.)

      So a tab becomes the characters '\\' and 't'.

      The only difference between Java strings and JavaScript strings is that in JavaScript, a single quote must be escaped.

      Example:

       input string: He didn't say, "Stop!"
       output string: He didn't say, \"Stop!\"
       
      Parameters:
      str - String to escape values in, may be null
      Returns:
      String with escaped values, null if null string input
    • hex

      protected static String hex(char ch)

      Returns an upper case hexadecimal String for the given character.

      Parameters:
      ch - The character to convert.
      Returns:
      An upper case hexadecimal String
    • contains

      public static boolean contains(char[] array, char valueToFind)

      Checks if the value is in the given array.

      The method returns false if a null array is passed in.

      Parameters:
      array - the array to search through
      valueToFind - the value to find
      Returns:
      true if the array contains the object
    • escapeKey

      private static String escapeKey(String key)
      Escape the separators in the key.
      Parameters:
      key - the key
      Returns:
      the escaped key