Class Values
- java.lang.Object
-
- org.apache.kafka.connect.data.Values
-
public class Values extends Object
Utility for converting from one Connect value to a different form. This is useful when the caller expects a value of a particular type but is uncertain whether the actual value is one that isn't directly that type but can be converted into that type.For example, a caller might expects a particular
Headerto contain anSchema.Type.INT64value, when in fact that header contains a string representation of a 32-bit integer. Here, the caller can use the methods in this class to convert the value to the desired type:Header header = ... long value = Values.convertToLong(header.schema(), header.value());This class is able to convert any value to a string representation as well as parse those string representations back into most of the types. The only exception is
Structvalues that require a schema and thus cannot be parsed from a simple string.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classValues.Parserprotected static classValues.SchemaDetector
-
Constructor Summary
Constructors Constructor Description Values()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description protected static List<Object>alignListEntriesWithSchema(Schema schema, List<Object> input)protected static Map<Object,Object>alignMapKeysAndValuesWithSchema(Schema mapSchema, Map<Object,Object> input)protected static Map<Object,Object>alignMapKeysWithSchema(Schema mapSchema, Map<Object,Object> input)protected static voidappend(StringBuilder sb, Object value, boolean embedded)protected static voidappendIterable(StringBuilder sb, Iterator<?> iter)protected static doubleasDouble(Object value, Schema schema, Throwable error)Convert the specified value with the desired floating point type.protected static longasLong(Object value, Schema fromSchema, Throwable error)Convert the specified value to the desired scalar value type.protected static booleancanParseSingleTokenLiteral(Values.Parser parser, boolean embedded, String tokenLiteral)protected static SchemacommonSchemaFor(Schema previous, SchemaAndValue latest)protected static ObjectconvertTo(Schema toSchema, Schema fromSchema, Object value)Convert the value to the desired type.static BooleanconvertToBoolean(Schema schema, Object value)Convert the specified value to anSchema.Type.BOOLEANvalue.static ByteconvertToByte(Schema schema, Object value)Convert the specified value to anSchema.Type.INT8byte value.static DateconvertToDate(Schema schema, Object value)Convert the specified value to andatevalue.static BigDecimalconvertToDecimal(Schema schema, Object value, int scale)Convert the specified value to andecimalvalue.static DoubleconvertToDouble(Schema schema, Object value)Convert the specified value to anSchema.Type.FLOAT64double value.static FloatconvertToFloat(Schema schema, Object value)Convert the specified value to anSchema.Type.FLOAT32float value.static IntegerconvertToInteger(Schema schema, Object value)Convert the specified value to anSchema.Type.INT32int value.static List<?>convertToList(Schema schema, Object value)Convert the specified value to anSchema.Type.ARRAYvalue.static LongconvertToLong(Schema schema, Object value)Convert the specified value to anSchema.Type.INT64long value.static Map<?,?>convertToMap(Schema schema, Object value)Convert the specified value to anSchema.Type.MAPvalue.static ShortconvertToShort(Schema schema, Object value)Convert the specified value to anSchema.Type.INT16short value.static StringconvertToString(Schema schema, Object value)Convert the specified value to anSchema.Type.STRINGvalue.static StructconvertToStruct(Schema schema, Object value)Convert the specified value to anSchema.Type.STRUCTvalue.static DateconvertToTime(Schema schema, Object value)Convert the specified value to antimevalue.static DateconvertToTimestamp(Schema schema, Object value)Convert the specified value to antimestampvalue.static DateFormatdateFormatFor(Date value)protected static Stringescape(String value)static SchemainferSchema(Object value)If possible infer a schema for the given value.protected static SchemaAndValueparse(Values.Parser parser, boolean embedded)static SchemaAndValueparseString(String value)Parse the specified string representation of a value into its schema and value.
-
-
-
Method Detail
-
convertToBoolean
public static Boolean convertToBoolean(Schema schema, Object value) throws DataException
Convert the specified value to anSchema.Type.BOOLEANvalue. The supplied schema is required if the value is a logical type when the schema contains critical information that might be necessary for converting to a boolean.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a boolean, or null if the supplied value was null
- Throws:
DataException- if the value could not be converted to a boolean
-
convertToByte
public static Byte convertToByte(Schema schema, Object value) throws DataException
Convert the specified value to anSchema.Type.INT8byte value. The supplied schema is required if the value is a logical type when the schema contains critical information that might be necessary for converting to a byte.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a byte, or null if the supplied value was null
- Throws:
DataException- if the value could not be converted to a byte
-
convertToShort
public static Short convertToShort(Schema schema, Object value) throws DataException
Convert the specified value to anSchema.Type.INT16short value. The supplied schema is required if the value is a logical type when the schema contains critical information that might be necessary for converting to a short.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a short, or null if the supplied value was null
- Throws:
DataException- if the value could not be converted to a short
-
convertToInteger
public static Integer convertToInteger(Schema schema, Object value) throws DataException
Convert the specified value to anSchema.Type.INT32int value. The supplied schema is required if the value is a logical type when the schema contains critical information that might be necessary for converting to an integer.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as an integer, or null if the supplied value was null
- Throws:
DataException- if the value could not be converted to an integer
-
convertToLong
public static Long convertToLong(Schema schema, Object value) throws DataException
Convert the specified value to anSchema.Type.INT64long value. The supplied schema is required if the value is a logical type when the schema contains critical information that might be necessary for converting to a long.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a long, or null if the supplied value was null
- Throws:
DataException- if the value could not be converted to a long
-
convertToFloat
public static Float convertToFloat(Schema schema, Object value) throws DataException
Convert the specified value to anSchema.Type.FLOAT32float value. The supplied schema is required if the value is a logical type when the schema contains critical information that might be necessary for converting to a floating point number.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a float, or null if the supplied value was null
- Throws:
DataException- if the value could not be converted to a float
-
convertToDouble
public static Double convertToDouble(Schema schema, Object value) throws DataException
Convert the specified value to anSchema.Type.FLOAT64double value. The supplied schema is required if the value is a logical type when the schema contains critical information that might be necessary for converting to a floating point number.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a double, or null if the supplied value was null
- Throws:
DataException- if the value could not be converted to a double
-
convertToString
public static String convertToString(Schema schema, Object value)
Convert the specified value to anSchema.Type.STRINGvalue. Not supplying a schema may limit the ability to convert to the desired type.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a string, or null if the supplied value was null
-
convertToList
public static List<?> convertToList(Schema schema, Object value)
Convert the specified value to anSchema.Type.ARRAYvalue. If the value is a string representation of an array, this method will parse the string and its elements to infer the schemas for those elements. Thus, this method supports arrays of other primitives and structured types. If the value is already an array (or list), this method simply casts and returns it.This method currently does not use the schema, though it may be used in the future.
- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a list, or null if the supplied value was null
- Throws:
DataException- if the value cannot be converted to a list value
-
convertToMap
public static Map<?,?> convertToMap(Schema schema, Object value)
Convert the specified value to anSchema.Type.MAPvalue. If the value is a string representation of a map, this method will parse the string and its entries to infer the schemas for those entries. Thus, this method supports maps with primitives and structured keys and values. If the value is already a map, this method simply casts and returns it.This method currently does not use the schema, though it may be used in the future.
- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a map, or null if the supplied value was null
- Throws:
DataException- if the value cannot be converted to a map value
-
convertToStruct
public static Struct convertToStruct(Schema schema, Object value)
Convert the specified value to anSchema.Type.STRUCTvalue. Structs cannot be converted from other types, so this method returns a struct only if the supplied value is a struct. If not a struct, this method throws an exception.This method currently does not use the schema, though it may be used in the future.
- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a struct, or null if the supplied value was null
- Throws:
DataException- if the value is not a struct
-
convertToTime
public static Date convertToTime(Schema schema, Object value)
Convert the specified value to antimevalue. Not supplying a schema may limit the ability to convert to the desired type.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a time, or null if the supplied value was null
- Throws:
DataException- if the value cannot be converted to a time value
-
convertToDate
public static Date convertToDate(Schema schema, Object value)
Convert the specified value to andatevalue. Not supplying a schema may limit the ability to convert to the desired type.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a date, or null if the supplied value was null
- Throws:
DataException- if the value cannot be converted to a date value
-
convertToTimestamp
public static Date convertToTimestamp(Schema schema, Object value)
Convert the specified value to antimestampvalue. Not supplying a schema may limit the ability to convert to the desired type.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a timestamp, or null if the supplied value was null
- Throws:
DataException- if the value cannot be converted to a timestamp value
-
convertToDecimal
public static BigDecimal convertToDecimal(Schema schema, Object value, int scale)
Convert the specified value to andecimalvalue. Not supplying a schema may limit the ability to convert to the desired type.- Parameters:
schema- the schema for the value; may be nullvalue- the value to be converted; may be null- Returns:
- the representation as a decimal, or null if the supplied value was null
- Throws:
DataException- if the value cannot be converted to a decimal value
-
inferSchema
public static Schema inferSchema(Object value)
If possible infer a schema for the given value.- Parameters:
value- the value whose schema is to be inferred; may be null- Returns:
- the inferred schema, or null if the value is null or no schema could be inferred
-
parseString
public static SchemaAndValue parseString(String value)
Parse the specified string representation of a value into its schema and value.- Parameters:
value- the string form of the value- Returns:
- the schema and value; never null, but whose schema and value may be null
- See Also:
convertToString(org.apache.kafka.connect.data.Schema, java.lang.Object)
-
convertTo
protected static Object convertTo(Schema toSchema, Schema fromSchema, Object value) throws DataException
Convert the value to the desired type.- Parameters:
toSchema- the schema for the desired type; may not be nullfromSchema- the schema for the supplied value; may be null if not known- Returns:
- the converted value; never null
- Throws:
DataException- if the value could not be converted to the desired type
-
asLong
protected static long asLong(Object value, Schema fromSchema, Throwable error)
Convert the specified value to the desired scalar value type.- Parameters:
value- the value to be converted; may not be nullfromSchema- the schema for the current value type; may not be nullerror- any previous error that should be included in an exception message; may be null- Returns:
- the long value after conversion; never null
- Throws:
DataException- if the value could not be converted to a long
-
asDouble
protected static double asDouble(Object value, Schema schema, Throwable error)
Convert the specified value with the desired floating point type.- Parameters:
value- the value to be converted; may not be nullschema- the schema for the current value type; may not be nullerror- any previous error that should be included in an exception message; may be null- Returns:
- the double value after conversion; never null
- Throws:
DataException- if the value could not be converted to a double
-
append
protected static void append(StringBuilder sb, Object value, boolean embedded)
-
appendIterable
protected static void appendIterable(StringBuilder sb, Iterator<?> iter)
-
dateFormatFor
public static DateFormat dateFormatFor(Date value)
-
canParseSingleTokenLiteral
protected static boolean canParseSingleTokenLiteral(Values.Parser parser, boolean embedded, String tokenLiteral)
-
parse
protected static SchemaAndValue parse(Values.Parser parser, boolean embedded) throws NoSuchElementException
- Throws:
NoSuchElementException
-
commonSchemaFor
protected static Schema commonSchemaFor(Schema previous, SchemaAndValue latest)
-
alignListEntriesWithSchema
protected static List<Object> alignListEntriesWithSchema(Schema schema, List<Object> input)
-
alignMapKeysAndValuesWithSchema
protected static Map<Object,Object> alignMapKeysAndValuesWithSchema(Schema mapSchema, Map<Object,Object> input)
-
-