use of io.confluent.ksql.function.KsqlFunctionException in project ksql by confluentinc.
the class ParseTimestampTest method shouldThrowOnEmptyString.
@Test
public void shouldThrowOnEmptyString() {
// When:
final KsqlFunctionException e = assertThrows(KsqlFunctionException.class, () -> udf.parseTimestamp("", "yyyy-MM-dd'T'HH:mm:ss.SSS"));
// Then:
assertThat(e.getMessage(), containsString("Text '' could not be parsed at index 0"));
}
use of io.confluent.ksql.function.KsqlFunctionException in project ksql by confluentinc.
the class ParseTimestampTest method shouldThrowIfFormatInvalid.
@Test
public void shouldThrowIfFormatInvalid() {
// When:
final KsqlFunctionException e = assertThrows(KsqlFunctionException.class, () -> udf.parseTimestamp("2021-12-01 12:10:11.123", "invalid"));
// Then:
assertThat(e.getMessage(), containsString("Unknown pattern letter: i"));
}
use of io.confluent.ksql.function.KsqlFunctionException in project ksql by confluentinc.
the class ParseTimestampTest method shouldThrowIfParseFails.
@Test
public void shouldThrowIfParseFails() {
// When:
final KsqlFunctionException e = assertThrows(KsqlFunctionException.class, () -> udf.parseTimestamp("invalid", "yyyy-MM-dd'T'HH:mm:ss.SSS"));
// Then:
assertThat(e.getMessage(), containsString("Text 'invalid' could not be parsed at index 0"));
}
use of io.confluent.ksql.function.KsqlFunctionException in project ksql by confluentinc.
the class StringToTimestampTest method shouldThrowIfFormatInvalid.
@Test
public void shouldThrowIfFormatInvalid() {
// When:
final KsqlFunctionException e = assertThrows(KsqlFunctionException.class, () -> udf.stringToTimestamp("2021-12-01 12:10:11.123", "invalid"));
// Then:
assertThat(e.getMessage(), containsString("Unknown pattern letter: i"));
}
use of io.confluent.ksql.function.KsqlFunctionException in project ksql by confluentinc.
the class FormatTimestamp method formatTimestamp.
@Udf(description = "Converts a TIMESTAMP value into the" + " string representation of the timestamp in the given format. Single quotes in the" + " timestamp format can be escaped with '', for example: 'yyyy-MM-dd''T''HH:mm:ssX'")
public String formatTimestamp(@UdfParameter(description = "TIMESTAMP value.") final Timestamp timestamp, @UdfParameter(description = "The format pattern should be in the format expected by" + " java.time.format.DateTimeFormatter.") final String formatPattern, @UdfParameter(description = " timeZone is a java.util.TimeZone ID format, for example: \"UTC\"," + " \"America/Los_Angeles\", \"PST\", \"Europe/London\"") final String timeZone) {
if (timestamp == null || formatPattern == null || timeZone == null) {
return null;
}
try {
final DateTimeFormatter formatter = formatters.get(formatPattern);
final ZoneId zoneId = ZoneId.of(timeZone);
return timestamp.toInstant().atZone(zoneId).format(formatter);
} catch (final ExecutionException | RuntimeException e) {
throw new KsqlFunctionException("Failed to format timestamp " + timestamp + " at timeZone '" + timeZone + "' with formatter '" + formatPattern + "': " + e.getMessage(), e);
}
}
Aggregations