Skip to content

Commit ec75721

Browse files
committed
"Time datatype support for actual value type"
1 parent 2c981e0 commit ec75721

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

src/main/java/io/cdap/plugin/servicenow/apiclient/ServiceNowTableAPIClientImpl.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,9 @@ public Schema fetchTableSchema(String tableName, String accessToken, SourceValue
309309
if (valueType.equals(SourceValueType.SHOW_DISPLAY_VALUE) &&
310310
!Objects.equals(field.getType(), field.getInternalType())) {
311311
columns.add(new ServiceNowColumn(field.getName(), field.getType()));
312+
} else if (valueType.equals(SourceValueType.SHOW_ACTUAL_VALUE) &&
313+
"glide_time".equalsIgnoreCase(field.getInternalType())) {
314+
columns.add(new ServiceNowColumn(field.getName(), "datetime"));
312315
} else {
313316
columns.add(new ServiceNowColumn(field.getName(), field.getInternalType()));
314317
}

src/main/java/io/cdap/plugin/servicenow/util/SchemaBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ private Schema createSchema(ServiceNowColumn column) {
7575
case "glide_date":
7676
return Schema.of(Schema.LogicalType.DATE);
7777
case "glide_date_time":
78+
case "datetime":
7879
return Schema.of(Schema.LogicalType.DATETIME);
7980
case "glide_time":
8081
return Schema.of(Schema.LogicalType.TIME_MICROS);

src/test/java/io/cdap/plugin/servicenow/apiclient/ServiceNowTableAPIClientImplTest.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,42 @@ public void testFetchTableSchema_ActualValueType() throws Exception {
117117
schema.getField("user_name").getSchema().getUnionSchemas().get(0).getType());
118118
}
119119

120+
@Test
121+
public void testFetchTableSchema_GlideTimeFieldWithActualValueType() throws Exception {
122+
ServiceNowConnectorConfig mockConfig = Mockito.mock(ServiceNowConnectorConfig.class);
123+
ServiceNowTableAPIClientImpl impl = new ServiceNowTableAPIClientImpl(mockConfig);
124+
ServiceNowTableAPIClientImpl implSpy = Mockito.spy(impl);
125+
126+
String jsonResponse = "{\n" +
127+
" \"result\": {\n" +
128+
" \"columns\": {\n" +
129+
" \"u_start_time\": {\n" +
130+
" \"label\": \"Start Time\",\n" +
131+
" \"name\": \"u_start_time\",\n" +
132+
" \"type\": \"string\",\n" +
133+
" \"internal_type\": \"glide_time\"\n" +
134+
" }\n" +
135+
" }\n" +
136+
" }\n" +
137+
"}";
138+
139+
RestAPIResponse mockResponse = new RestAPIResponse(Collections.emptyMap(), jsonResponse, null);
140+
Mockito.doReturn(mockResponse).when(implSpy).executeGetWithRetries(Mockito.any());
141+
142+
Schema schema = implSpy.fetchTableSchema("u_custom_table", "dummy-access-token", SourceValueType.SHOW_ACTUAL_VALUE);
143+
144+
Assert.assertNotNull(schema);
145+
Assert.assertEquals("record", schema.getDisplayName());
146+
Assert.assertEquals(1, schema.getFields().size());
147+
148+
Schema.Field field = schema.getField("u_start_time");
149+
Assert.assertNotNull(field);
150+
151+
Schema fieldSchema = field.getSchema().getUnionSchemas().get(0);
152+
Assert.assertEquals(Schema.LogicalType.DATETIME, fieldSchema.getLogicalType());
153+
}
154+
155+
120156
@Test
121157
public void testFetchTableSchema_DisplayValueType() throws Exception {
122158
ServiceNowConnectorConfig mockConfig = Mockito.mock(ServiceNowConnectorConfig.class);

0 commit comments

Comments
 (0)