Skip to content

Commit eb16257

Browse files
vbeskrovnovcyrusv
authored andcommitted
CC-6599: java.lang.ClassCastException: java.util.Date cannot be cast to java.lang.Long while setting default date value (#135)
* Fix ClassCastException while setting Date default value * Add tests for default values * Remove byte type from tests because of bug (it was fixed in another PR) * improved fix and added test Signed-off-by: Lev Zemlyanov <lev@confluent.io> * variable name fix Signed-off-by: Lev Zemlyanov <lev@confluent.io> * review comment Signed-off-by: Lev Zemlyanov <lev@confluent.io>
1 parent 4a34e4b commit eb16257

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/main/java/io/confluent/connect/elasticsearch/Mapping.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,8 @@ private static JsonNode inferPrimitive(String type, Object defaultValue) {
208208
defaultValueNode = JsonNodeFactory.instance.booleanNode((boolean) defaultValue);
209209
break;
210210
case ElasticsearchSinkConnectorConstants.DATE_TYPE:
211-
defaultValueNode = JsonNodeFactory.instance.numberNode((long) defaultValue);
211+
long value = ((java.util.Date) defaultValue).getTime();
212+
defaultValueNode = JsonNodeFactory.instance.numberNode(value);
212213
break;
213214
default:
214215
throw new DataException("Invalid primitive type.");

src/test/java/io/confluent/connect/elasticsearch/MappingTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,24 @@ public void testInferMapping() throws Exception {
7575
assertEquals(0, intMapping.get("properties").get("foo").get("null_value").asInt());
7676
}
7777

78+
@Test
79+
public void testInferMappingDefaultDate() {
80+
java.util.Date expected = new java.util.Date();
81+
82+
Schema dateSchema = SchemaBuilder
83+
.struct()
84+
.name("record")
85+
.field("foo", Date.builder().defaultValue(expected).build())
86+
.build();
87+
88+
JsonNode dateMapping = Mapping.inferMapping(client, dateSchema);
89+
assertNotNull(dateMapping.get("properties").get("foo").get("null_value"));
90+
assertEquals(
91+
expected.getTime(),
92+
dateMapping.get("properties").get("foo").get("null_value").asLong()
93+
);
94+
}
95+
7896
protected Schema createSchema() {
7997
Schema structSchema = createInnerSchema();
8098
return SchemaBuilder.struct().name("record")

0 commit comments

Comments
 (0)