Package org.tmatesoft.svn.core

# Class SVNProperties

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

All Implemented Interfaces:
  `Serializable`, `Cloneable`

public class SVNProperties extends Object implements Cloneable, 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
Description
`SVNProperties()`
Creates an empty `SVNProperties` object.
`SVNProperties(SVNProperties properties)`
Creates a new `SVNProperties` object copying the given one.

## Method Summary

Modifier and Type
Method
Description
`Map<String,SVNPropertyValue>`
`asMap()`
Returns SVNProperties as Map of String, SVNPropertyValue pairs.
`void`
`clear()`
Removes all properties from this object.
`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(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(Object obj)`
Tells whether this object and `obj` are equal.
`byte[]`
`getBinaryValue(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.
`String`
`getStringValue(String propertyName)`
Returns a `String` property value.
`SVNPropertyValue`
`getSVNPropertyValue(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).
`Set<String>`
`nameSet()`
Returns a set of property names contained by this object.
`void`
`put(String propertyName, byte[] propertyValue)`
Stores a new property name-to-value mapping in this object.
`void`
`put(String propertyName, char[] propertyValue, String encoding)`
Stores a new property name-to-value mapping in this object.
`void`
`put(String propertyName, String propertyValue)`
Stores a new property name-to-value mapping in this object.
`void`
`put(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(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.
`String`
`toString()`
`static SVNProperties`
`unmodifiableProperties(SVNProperties properties)`
Returns an unmodifiable view of the specified `properties`.
`Collection`
`values()`
Returns a collection of property values contained in this properties object.
`static SVNProperties`
`wrap(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 Details

### 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 Details

### wrap

public static SVNProperties wrap(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 Map<String,SVNPropertyValue> asMap()
Returns SVNProperties as Map of String, SVNPropertyValue pairs.

Returns:
  copy of SVNProperties as Map object

### put

public void put(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(String propertyName, 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(String propertyName, char[] propertyValue, 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(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 String getStringValue(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(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(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(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(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 Set<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 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 `Object`
Returns:
  hash code of this object

### equals

public boolean equals(Object obj)
Tells whether this object and `obj` are equal.

Overrides:
  `equals` in class `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 Object clone() throws CloneNotSupportedException
Creates and returns a copy of this object.

Overrides:
  `clone` in class `Object`
Returns:
  a clone of this instance
Throws:
  `CloneNotSupportedException`

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### dispose

public void dispose()