# Class AbstractCaverphone

java.lang.Object
org.apache.commons.codec.language.AbstractCaverphone

All Implemented Interfaces:
  `Encoder, StringEncoder`

Direct Known Subclasses:
  `Caverphone1, Caverphone2`

public abstract class AbstractCaverphone extends Object implements StringEncoder
Encodes a string into a Caverphone value. This is an algorithm created by the Caversham Project at the University of Otago. It implements the Caverphone 2.0 algorithm:

This class is immutable and thread-safe.

Since:
  1.5
See Also:
  - Wikipedia - Caverphone

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AbstractCaverphone()`
  Constructs a new instance for subclasses.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `encode(Object source)`
  Encodes an Object using the Caverphone algorithm.
  `boolean`
  `isEncodeEqual(String str1, String str2)`
  Tests if the encodings of two strings are equal.

  ### Methods inherited from class Object

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

  ### Methods inherited from interface StringEncoder

  `encode`

- ## Constructor Details

  - ### AbstractCaverphone

    public AbstractCaverphone()
    Constructs a new instance for subclasses.

- ## Method Details

  - ### encode

    public Object encode(Object source) throws EncoderException
    Encodes an Object using the Caverphone algorithm. This method is provided in order to satisfy the requirements of the Encoder interface, and will throw an EncoderException if the supplied object is not of type `String`.
    Specified by:
      `encode` in interface `Encoder`
    Parameters:
      `source` - Object to encode.
    Returns:
      An object (or type `String`) containing the Caverphone code which corresponds to the String supplied.
    Throws:
      `EncoderException` - if the parameter supplied is not of type `String`.

  - ### isEncodeEqual

    public boolean isEncodeEqual(String str1, String str2) throws EncoderException
    Tests if the encodings of two strings are equal. This method might be promoted to a new AbstractStringEncoder superclass.
    Parameters:
      `str1` - First of two strings to compare.
      `str2` - Second of two strings to compare.
    Returns:
      `true` if the encodings of these strings are identical, `false` otherwise.
    Throws:
      `EncoderException` - thrown if there is an error condition during the encoding process.