org.tmatesoft.svn.core

## Class SVNProperties

- java.lang.Object
- - org.tmatesoft.svn.core.SVNProperties

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable

      public class SVNProperties
      extends java.lang.Object
      implements java.lang.Cloneable, java.io.Serializable

  The SVNProperties class represents an object wrapper for `String` to `SVNPropertyValue` mappings where `String` keys represent property names and values - property values wrapped in `SVNPropertyValue` objects.

  This class is backed by a `Map` object and brings specific methods useful for working with version controlled properties.

  Objects of this type are modifiable.

  Since:
    1.2
  Version:
    1.3
  Author:
    TMate Software Ltd.
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SVNProperties()` Creates an empty `SVNProperties` object.
    `SVNProperties(SVNProperties properties)` Creates a new `SVNProperties` object copying the given one.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.util.Map<java.lang.String,SVNPropertyValue>` | `asMap()` Returns SVNProperties as Map of String, SVNPropertyValue pairs.
    `void` | `clear()` Removes all properties from this object.
    `java.lang.Object` | `clone()` Creates and returns a copy of this object.
    `SVNProperties` | `compareTo(SVNProperties properties)` Compares this object against another one returning a difference between them.
    `boolean` | `containsName(java.lang.String propertyName)` Tells whether this properties object contains the specified property name.
    `boolean` | `containsValue(SVNPropertyValue value)` Tells whether this properties object contains the specified property value.
    `void` | `dispose()`
    `boolean` | `equals(java.lang.Object obj)` Tells whether this object and `obj` are equal.
    `byte[]` | `getBinaryValue(java.lang.String propertyName)` Returns a binary property value.
    `SVNProperties` | `getRegularProperties()` Returns a subset of properties contained in this properties object which suffice for `SVNProperty.isRegularProperty(String)` clause.
    `java.lang.String` | `getStringValue(java.lang.String propertyName)` Returns a `String` property value.
    `SVNPropertyValue` | `getSVNPropertyValue(java.lang.String propertyName)` Returns a property value as an `SVNPropertyValue`.
    `int` | `hashCode()` Returns a hash code of this object.
    `boolean` | `isEmpty()` Tells if this properties object holds no properties (empty).
    `java.util.Set<java.lang.String>` | `nameSet()` Returns a set of property names contained by this object.
    `void` | `put(java.lang.String propertyName, byte[] propertyValue)` Stores a new property name-to-value mapping in this object.
    `void` | `put(java.lang.String propertyName, char[] propertyValue, java.lang.String encoding)` Stores a new property name-to-value mapping in this object.
    `void` | `put(java.lang.String propertyName, java.lang.String propertyValue)` Stores a new property name-to-value mapping in this object.
    `void` | `put(java.lang.String propertyName, SVNPropertyValue propertyValue)` Stores a new mapping `propertyName` to `propertyValue` in this object.
    `void` | `putAll(SVNProperties properties)` Puts all properties from the specified properties object to this object.
    `SVNPropertyValue` | `remove(java.lang.String propertyName)` Removes the specified property from this properties object.
    `void` | `removeNullValues()` Removes all mappings which values are nulls from this object.
    `int` | `size()` Returns the number of properties held by this object.
    `java.lang.String` | `toString()`
    `static SVNProperties` | `unmodifiableProperties(SVNProperties properties)` Returns an unmodifiable view of the specified `properties`.
    `java.util.Collection` | `values()` Returns a collection of property values contained in this properties object.
    `static SVNProperties` | `wrap(java.util.Map map)` Creates a new `SVNProperties` object wrapping a given map with properties.

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### SVNProperties

          public SVNProperties()

      Creates an empty `SVNProperties` object.

    - #### SVNProperties

          public SVNProperties(SVNProperties properties)

      Creates a new `SVNProperties` object copying the given one.
      Parameters:
        `properties` - an initializer

  - ### Method Detail

    - #### wrap

          public static SVNProperties wrap(java.util.Map map)

      Creates a new `SVNProperties` object wrapping a given map with properties.

      `map` is not stored by this object, instead its contents are copied into a new `Map` object (which will be backed by a new `SVNProperties` object) according to the following rules:
      if the value is of type `String`, then it's wrapped into `SVNPropertyValue` using the `SVNPropertyValue.create(String)` method;
      if the value is of type `byte[]`, then it's wrapped into `SVNPropertyValue` using the `SVNPropertyValue.create(String, byte[])` method;
      if the value is of type `SVNPropertyValue`, then it's not copied but is put into a new map as is;
      Parameters:
        `map` - initial map holding properties
      Returns:
        `SVNProperties` object; if `map` is null, returns an empty `SVNProperties` object created as `new SVNProperties()`
      See Also:
        `SVNProperties()`

    - #### unmodifiableProperties

          public static SVNProperties unmodifiableProperties(SVNProperties properties)

      Returns an unmodifiable view of the specified `properties`. Any attempt to modify the returned `SVNProperties` object result in an `UnsupportedOperationException`.
      Parameters:
        `properties` - `SVNProperties` object for which an unmodifiable view is to be returned.
      Returns:
        an unmodifiable view of the specified properties.

    - #### asMap

          public java.util.Map<java.lang.String,SVNPropertyValue> asMap()

      Returns SVNProperties as Map of String, SVNPropertyValue pairs.
      Returns:
        copy of SVNProperties as Map object

    - #### put

          public void put(java.lang.String propertyName,
                 SVNPropertyValue propertyValue)

      Stores a new mapping `propertyName` to `propertyValue` in this object.
      Parameters:
        `propertyName` - property name
        `propertyValue` - property value object

    - #### put

          public void put(java.lang.String propertyName,
                 java.lang.String propertyValue)

      Stores a new property name-to-value mapping in this object.

      `propertyValue` is converted to an `SVNPropertyValue` object through a call to `SVNPropertyValue.create(String)`.

      Parameters:
        `propertyName` - property name
        `propertyValue` - property value string

    - #### put

          public void put(java.lang.String propertyName,
                 char[] propertyValue,
                 java.lang.String encoding)

      Stores a new property name-to-value mapping in this object.

      `propertyValue` is converted to an `SVNPropertyValue` object through a call to `SVNPropertyValue.create(String)`.

      Parameters:
        `propertyName` - property name
        `propertyValue` - property value string

    - #### put

          public void put(java.lang.String propertyName,
                 byte[] propertyValue)

      Stores a new property name-to-value mapping in this object.

      `propertyValue` is converted to an `SVNPropertyValue` object through a call to `SVNPropertyValue.create(String, byte[])`.

      Parameters:
        `propertyName` - property name
        `propertyValue` - property value bytes

    - #### getStringValue

          public java.lang.String getStringValue(java.lang.String propertyName)

      Returns a `String` property value.
      Parameters:
        `propertyName` - property name
      Returns:
        property value string; null if there's no such property or if it's not a `String` property value

    - #### getBinaryValue

          public byte[] getBinaryValue(java.lang.String propertyName)

      Returns a binary property value.
      Parameters:
        `propertyName` - property name
      Returns:
        byte array containing property value bytes; null if there's no such property or if it's not a binary property value

    - #### getSVNPropertyValue

          public SVNPropertyValue getSVNPropertyValue(java.lang.String propertyName)

      Returns a property value as an `SVNPropertyValue`.
      Parameters:
        `propertyName` - property name
      Returns:
        property value object; null if there's no such property

    - #### remove

          public SVNPropertyValue remove(java.lang.String propertyName)

      Removes the specified property from this properties object.
      Parameters:
        `propertyName` - name of the property to remove from this object
      Returns:
        the value of the removed object

    - #### putAll

          public void putAll(SVNProperties properties)

      Puts all properties from the specified properties object to this object.
      Parameters:
        `properties` - properties object

    - #### isEmpty

          public boolean isEmpty()

      Tells if this properties object holds no properties (empty).
      Returns:
        true if this object holds no properties; otherwise false

    - #### clear

          public void clear()

      Removes all properties from this object.

    - #### removeNullValues

          public void removeNullValues()

      Removes all mappings which values are nulls from this object.

    - #### size

          public int size()

      Returns the number of properties held by this object.
      Returns:
        number of properties

    - #### containsName

          public boolean containsName(java.lang.String propertyName)

      Tells whether this properties object contains the specified property name.
      Parameters:
        `propertyName` - property name
      Returns:
        true if this object contains a mapping with the specified key (`propertyName`)

    - #### nameSet

          public java.util.Set<java.lang.String> nameSet()

      Returns a set of property names contained by this object.
      Returns:
        property names set

    - #### containsValue

          public boolean containsValue(SVNPropertyValue value)

      Tells whether this properties object contains the specified property value.
      Parameters:
        `value` - property value
      Returns:
        true if this object contains `value`

    - #### values

          public java.util.Collection values()

      Returns a collection of property values contained in this properties object.
      Returns:
        property values collection

    - #### getRegularProperties

          public SVNProperties getRegularProperties()

      Returns a subset of properties contained in this properties object which suffice for `SVNProperty.isRegularProperty(String)` clause.
      Returns:
        regular properties; if there are no properties which would suffice the aforementioned clause, an empty `SVNProperties` object is returned

    - #### compareTo

          public SVNProperties compareTo(SVNProperties properties)

      Compares this object against another one returning a difference between them.

      Properties which are present in this object but are not in `properties`, are put to the result as property name to null mappings. Properties which are present only in `properties` but not in this object, are added to the result. Also result will include those properties which are present in both objects but have different values; in this case result will include such properties with values from `properties`.
      Parameters:
        `properties` - another properties object
      Returns:
        properties object holding the properties difference

    - #### hashCode

          public int hashCode()

      Returns a hash code of this object.

      A hash code is evaluated as follows: `31 +` `hash code` of the underlying `Map` holding the property key to property value mappings.
      Overrides:
        `hashCode` in class `java.lang.Object`
      Returns:
        hash code of this object

    - #### equals

          public boolean equals(java.lang.Object obj)

      Tells whether this object and `obj` are equal.
      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `obj` - object to compare with
      Returns:
        true if `obj` is either this very object, or is an instance of `SVNProperties` with the same contents of properties

    - #### clone

          public java.lang.Object clone()
                                 throws java.lang.CloneNotSupportedException

      Creates and returns a copy of this object.
      Overrides:
        `clone` in class `java.lang.Object`
      Returns:
        a clone of this instance
      Throws:
        `java.lang.CloneNotSupportedException`

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### dispose

          public void dispose()