org.apache.solr.common.cloud

## Class Aliases

- java.lang.Object
- - org.apache.solr.common.cloud.Aliases

    public class Aliases
    extends Object

Holds collection aliases -- virtual collections that point to one or more other collections. We might add other types of aliases here some day. Immutable.

### Field Summary

Fields
`static Aliases` `EMPTY` An empty, minimal Aliases primarily used to support the non-cloud solr use cases.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`Aliases` `cloneWithCollectionAlias(String alias, String collections)` Creates a new Aliases instance with the same data as the current one but with a modification based on the parameters.
`Aliases` `cloneWithCollectionAliasProperties(String alias, Map<String,String> properties)` Set the values for some properties keys on a collection alias.
`Aliases` `cloneWithCollectionAliasProperties(String alias, String propertiesKey, String propertiesValue)` Set the value for some properties on a collection alias.
`Aliases` `cloneWithRename(String before, String after)` Rename an alias.
`static Map<String,List<String>>` `convertMapOfCommaDelimitedToMapOfList(Map<String,String> collectionAliasMap)`
`static Map<String,String>` `convertMapOfListToMapOfCommaDelimited(Map<String,List<String>> collectionAliasMap)`
`void` `forEachAlias(BiConsumer<String,List<String>> consumer)`
`static Aliases` `fromJSON(byte[] bytes, int zNodeVersion)` Create an instance from the JSON bytes read from zookeeper.
`Map<String,List<String>>` `getCollectionAliasListMap()` Get a fully parsed map of collection aliases.
`Map<String,String>` `getCollectionAliasMap()` Get a map similar to the JSON data as stored in zookeeper.
`Map<String,String>` `getCollectionAliasProperties(String alias)` Returns an unmodifiable Map of properties for a given alias.
`int` `getZNodeVersion()`
`boolean` `hasAlias(String aliasName)` Returns true if an alias is defined, false otherwise.
`boolean` `isRoutedAlias(String aliasName)` Returns true if an alias exists and is a routed alias, false otherwise.
`List<String>` `resolveAliases(String aliasName)` List the collections associated with a particular alias.
`static List<String>` `resolveAliasesGivenAliasMap(Map<String,List<String>> collectionAliasListMap, String aliasName)`
`String` `resolveSimpleAlias(String aliasName)` Resolve an alias that points to a single collection.
`static String` `resolveSimpleAliasGivenAliasMap(Map<String,List<String>> collectionAliasListMap, String aliasName)`
`int` `size()`
`byte[]` `toJSON()` Serialize our state.
`String` `toString()`

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Field Detail

#### EMPTY

    public static final Aliases EMPTY

An empty, minimal Aliases primarily used to support the non-cloud solr use cases. Not normally useful in cloud situations where the version of the node needs to be tracked even if all aliases are removed. The -1 version makes it subordinate to any real version, and furthermore we never "set" this EMPTY instance into ZK.

### Method Detail

#### forEachAlias

    public void forEachAlias(BiConsumer<String,List<String>> consumer)

#### size

    public int size()

#### fromJSON

    public static Aliases fromJSON(byte[] bytes,
                                   int zNodeVersion)

Create an instance from the JSON bytes read from zookeeper. Generally this should only be done by a ZkStateReader.

Parameters:
  `bytes` - The bytes read via a getData request to zookeeper (possibly null)
  `zNodeVersion` - the version of the data in zookeeper that this instance corresponds to
Returns:
  A new immutable Aliases object

#### toJSON

    public byte[] toJSON()

Serialize our state.

#### convertMapOfCommaDelimitedToMapOfList

    public static Map<String,List<String>> convertMapOfCommaDelimitedToMapOfList(Map<String,String> collectionAliasMap)

#### convertMapOfListToMapOfCommaDelimited

    public static Map<String,String> convertMapOfListToMapOfCommaDelimited(Map<String,List<String>> collectionAliasMap)

#### getZNodeVersion

    public int getZNodeVersion()

#### getCollectionAliasMap

    public Map<String,String> getCollectionAliasMap()

Get a map similar to the JSON data as stored in zookeeper. Callers may prefer use of `getCollectionAliasListMap()` instead, if collection names will be iterated.

Returns:
  an unmodifiable Map of collection aliases mapped to a comma delimited string of the collection(s) the alias maps to. Does not return null.

#### getCollectionAliasListMap

    public Map<String,List<String>> getCollectionAliasListMap()

Get a fully parsed map of collection aliases.

Returns:
  an unmodifiable Map of collection aliases mapped to a list of the collection(s) the alias maps to. Does not return null.

#### getCollectionAliasProperties

    public Map<String,String> getCollectionAliasProperties(String alias)

Returns an unmodifiable Map of properties for a given alias. This method will never return null.

Parameters:
  `alias` - the name of an alias also found as a key in `getCollectionAliasListMap()`
Returns:
  The properties for the alias (possibly empty).

#### resolveAliases

    public List<String> resolveAliases(String aliasName)

List the collections associated with a particular alias. One level of alias indirection is supported (alias to alias to collection). Such indirection may be deprecated in the future, use with caution.

Returns:
  An unmodifiable list of collections names that the input alias name maps to. If there are none, the input is returned.

#### hasAlias

    public boolean hasAlias(String aliasName)

Returns true if an alias is defined, false otherwise.

#### isRoutedAlias

    public boolean isRoutedAlias(String aliasName)

Returns true if an alias exists and is a routed alias, false otherwise.

#### resolveSimpleAlias

    public String resolveSimpleAlias(String aliasName)
                              throws SolrException

Resolve an alias that points to a single collection. One level of alias indirection is supported.

Parameters:
  `aliasName` - alias name
Returns:
  original name if there's no such alias, or a resolved name. If an alias points to more than 1 collection (directly or indirectly) an exception is thrown
Throws:
  `SolrException` - if either direct or indirect alias points to more than 1 name.

#### resolveSimpleAliasGivenAliasMap

    public static String resolveSimpleAliasGivenAliasMap(Map<String,List<String>> collectionAliasListMap,
                                                         String aliasName)
                                                  throws SolrException

Throws:
  `SolrException`
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

#### resolveAliasesGivenAliasMap

    public static List<String> resolveAliasesGivenAliasMap(Map<String,List<String>> collectionAliasListMap,
                                                           String aliasName)

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

#### cloneWithCollectionAlias

    public Aliases cloneWithCollectionAlias(String alias,
                                            String collections)

Creates a new Aliases instance with the same data as the current one but with a modification based on the parameters.

Note that the state in zookeeper is unaffected by this method and the change must still be persisted via `ZkStateReader.AliasesManager.applyModificationAndExportToZk(UnaryOperator)`

Parameters:
  `alias` - the alias to update, must not be null
  `collections` - the comma separated list of collections for the alias, null to remove the alias

#### cloneWithRename

    public Aliases cloneWithRename(String before,
                                   String after)
                            throws SolrException

Rename an alias. This performs a "deep rename", which changes also the second-level alias lists. Renaming routed aliases is not supported.

Note that the state in zookeeper is unaffected by this method and the change must still be persisted via `ZkStateReader.AliasesManager.applyModificationAndExportToZk(UnaryOperator)`

Parameters:
  `before` - previous alias name, must not be null
  `after` - new alias name. If this is null then it's equivalent to calling `cloneWithCollectionAlias(String, String)` with the second argument set to null, ie. removing an alias.
Returns:
  new instance with the renamed alias
Throws:
  `SolrException` - when either `before` or `after` is empty, or the `before` name is a routed alias

#### cloneWithCollectionAliasProperties

    public Aliases cloneWithCollectionAliasProperties(String alias,
                                                      String propertiesKey,
                                                      String propertiesValue)

Set the value for some properties on a collection alias. This is done by creating a new Aliases instance with the same data as the current one but with a modification based on the parameters.

Note that the state in zookeeper is unaffected by this method and the change must still be persisted via `ZkStateReader.AliasesManager.applyModificationAndExportToZk(UnaryOperator)`

Parameters:
  `alias` - the alias to update
  `propertiesKey` - the key for the properties
  `propertiesValue` - the properties to add/replace, null to remove the key.
Returns:
  An immutable copy of the aliases with the new properties.

#### cloneWithCollectionAliasProperties

    public Aliases cloneWithCollectionAliasProperties(String alias,
                                                      Map<String,String> properties)
                                               throws SolrException

Set the values for some properties keys on a collection alias. This is done by creating a new Aliases instance with the same data as the current one but with a modification based on the parameters.

Note that the state in zookeeper is unaffected by this method and the change must still be persisted via `ZkStateReader.AliasesManager.applyModificationAndExportToZk(UnaryOperator)`

Parameters:
  `alias` - the alias to update
  `properties` - the properties to add/replace, null values in the map will remove the key.
Returns:
  An immutable copy of the aliases with the new properties.
Throws:
  `SolrException`

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`