Interface SchemaNameAdjuster

Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface @ThreadSafe public interface SchemaNameAdjuster
A adjuster for the names of change data message schemas and for the names of the fiields in the schemas. Currently, this implements the rules required for using these schemas in Avro messages. Avro rules for schema fullnames are as follows:
  • Each has a fullname that is composed of two parts; a name and a namespace. Equality of names is defined on the fullname.
  • The name portion of a fullname, record field names, and enum symbols must start with a Latin letter or underscore character (e.g., [A-Z,a-z,_]); and subsequent characters must be Latin alphanumeric or the underscore (_) characters (e.g., [A-Z,a-z,0-9,_]).
  • A namespace is a dot-separated sequence of such names.
  • Equality of names (including field names and enum symbols) as well as fullnames is case-sensitive.
  • A SchemaNameAdjuster can determine if the supplied fullname follows these Avro rules.

    In addition to handling the Avro schema naming the adjuster can handle the situation when non-ASCII characters are used in either schema or field name. By default just normalization/replacement with underscore character is used. In case of native names it can lead to collisions. To solve the problem the Unicode based encoding can be used. In that case the special non-ASCII character is replaced with sequence _uXXXX where XXXX is heaxdecimal code of the replaced character.

    Author:
    Randall Hauch
    • Field Details

    • Method Details

      • adjust

        String adjust(String proposedName)
        Convert the proposed string to a valid Avro fullname, replacing all invalid characters with the underscore ('_') character.
        Parameters:
        proposedName - the proposed fullname; may not be null
        Returns:
        the valid fullname for Avro; never null
      • create

        static SchemaNameAdjuster create()
        Create a stateful Avro fullname adjuster that logs a warning the first time an invalid fullname is seen and replaced with a valid fullname, and throws an error if the replacement conflicts with that of a different original. This method replaces all invalid characters with the underscore character ('_').
      • create

        static SchemaNameAdjuster create(ReplacementFunction function)
        This method replaces all invalid characters with ReplacementFunction
      • create

        Create a stateful Avro fullname adjuster that logs a warning the first time an invalid fullname is seen and replaced with a valid fullname. This method replaces all invalid characters with the underscore character ('_').
        Parameters:
        function - the replacement function
        uponConflict - the function to be called when there is a conflict and after that conflict is logged; may be null
        Returns:
        the validator; never null
      • create

        static SchemaNameAdjuster create(char replacement, SchemaNameAdjuster.ReplacementOccurred uponReplacement)
        Create a stateful Avro fullname adjuster that calls the supplied SchemaNameAdjuster.ReplacementOccurred function when an invalid fullname is seen and replaced with a valid fullname.
        Parameters:
        replacement - the character that should be used to replace all invalid characters
        uponReplacement - the function called each time the original fullname is replaced; may be null
        Returns:
        the adjuster; never null
      • create

        static SchemaNameAdjuster create(String replacement, SchemaNameAdjuster.ReplacementOccurred uponReplacement)
        Create a stateful Avro fullname adjuster that calls the supplied SchemaNameAdjuster.ReplacementOccurred function when an invalid fullname is seen and replaced with a valid fullname.
        Parameters:
        replacement - the character sequence that should be used to replace all invalid characters
        uponReplacement - the function called each time the original fullname is replaced; may be null
        Returns:
        the adjuster; never null
      • isValidFullname

        static boolean isValidFullname(String fullname)
        Determine if the supplied string is a valid Avro namespace.
        Parameters:
        fullname - the name to be used as an Avro fullname; may not be null
        Returns:
        true if the fullname satisfies Avro rules, or false otherwise
      • validFullname

        static String validFullname(String proposedName)
        Convert the proposed string to a valid Avro fullname, replacing all invalid characters with the underscore ('_') character.
        Parameters:
        proposedName - the proposed fullname; may not be null
        Returns:
        the valid fullname for Avro; never null
      • validFullname

        static String validFullname(String proposedName, String replacement)
        Convert the proposed string to a valid Avro fullname, replacing all invalid characters with the supplied string.
        Parameters:
        proposedName - the proposed fullname; may not be null
        replacement - the character sequence that should be used to replace all invalid characters
        Returns:
        the valid fullname for Avro; never null
      • validFullname

        static String validFullname(String proposedName, ReplacementFunction replacement)
        Convert the proposed string to a valid Avro fullname, using the supplied function to replace all invalid characters.
        Parameters:
        proposedName - the proposed fullname; may not be null
        replacement - the character sequence that should be used to replace all invalid characters
        Returns:
        the valid fullname for Avro; never null
      • validFullname

        static String validFullname(String proposedName, ReplacementFunction replacement, SchemaNameAdjuster.ReplacementOccurred uponReplacement)
        Convert the proposed string to a valid Avro fullname, using the supplied function to replace all invalid characters.
        Parameters:
        proposedName - the proposed fullname; may not be null
        replacement - the character sequence that should be used to replace all invalid characters
        uponReplacement - the function to be called every time the proposed name is invalid and replaced; may be null
        Returns:
        the valid fullname for Avro; never null