static String schema(Schema schema) { String result; if (!Strings.isNullOrEmpty(schema.name())) { if (Time.LOGICAL_NAME.equals(schema.name())) { result = "[Time](https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Time.html)"; } else if (Date.LOGICAL_NAME.equals(schema.name())) { result = "[Date](https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Date.html)"; } else if (Timestamp.LOGICAL_NAME.equals(schema.name())) { result = "[Timestamp](https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Timestamp.html)"; } else if (Decimal.LOGICAL_NAME.equals(schema.name())) { result = "[Decimal](https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Decimal.html)"; } else { result = String.format("[%s](#%s)", schema.name(), schema.name()); } } else { if (Schema.Type.ARRAY == schema.type()) { result = String.format("Array of %s", schema(schema.valueSchema())); } else if (Schema.Type.MAP == schema.type()) { result = String.format("Map of <%s, %s>", schema(schema.keySchema()), schema(schema.valueSchema())); } else { result = String.format("[%s](https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Schema.Type.html#%s)", CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, schema.type().toString()), schema.type() ); } } return result; }
@Override public byte[] fromConnectData(String topic, Schema schema, Object value) { if (schema != null && schema.type() != Schema.Type.BYTES) throw new DataException("Invalid schema type for ByteArrayConverter: " + schema.type().toString()); if (value != null && !(value instanceof byte[])) throw new DataException("ByteArrayConverter is not compatible with objects of type " + value.getClass()); return (byte[]) value; }
return castToString(value); default: throw new DataException(targetType.toString() + " is not supported in the Cast transformation.");
public static ConfigDef config() { return new ConfigDef() .define( ConfigKeyBuilder.of(OUTPUT_SCHEMA_CONFIG, ConfigDef.Type.STRING) .documentation(OUTPUT_SCHEMA_DOC) .defaultValue(Schema.Type.STRING.toString()) .validator( ConfigDef.ValidString.in( Schema.Type.STRING.toString(), Schema.Type.BYTES.toString() ) ) .importance(ConfigDef.Importance.MEDIUM) .build() ).define( ConfigKeyBuilder.of(SCHEMAS_ENABLE_CONFIG, ConfigDef.Type.BOOLEAN) .documentation(SCHEMAS_ENABLE_DOC) .defaultValue(false) .importance(ConfigDef.Importance.MEDIUM) .build() ); }