This is an automated email from the ASF dual-hosted git repository.
opwvhk pushed a commit to branch branch-1.12
in repository https://gitbox.apache.org/repos/asf/avro.git
The following commit(s) were added to refs/heads/branch-1.12 by this push:
new 33ad0821a1 AVRO-4159 [Java]: complete support for duration (#3416)
33ad0821a1 is described below
commit 33ad0821a17dde0cda18164eb82c0a02e5fda3b3
Author: Oscar Westra van Holthe - Kind <[email protected]>
AuthorDate: Fri Jun 27 23:35:03 2025 +0200
AVRO-4159 [Java]: complete support for duration (#3416)
* AVRO-4159: Add duration logical type to switch statement
* AVRO-4159: Improve TimePeriod javadoc
* AVRO-4159: Also test for support by type name
(cherry picked from commit 0f9d0c549fd6e268945288deba8b4f77f19b8e71)
---
lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java | 3 +++
lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java | 8 ++++----
lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java | 2 +-
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java
b/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java
index 6a894f0510..d5b246b4b7 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/LogicalTypes.java
@@ -140,6 +140,9 @@ public class LogicalTypes {
case BIG_DECIMAL:
logicalType = BIG_DECIMAL_TYPE;
break;
+ case DURATION:
+ logicalType = DURATION_TYPE;
+ break;
case UUID:
logicalType = UUID_TYPE;
break;
diff --git a/lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java
b/lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java
index a1f7fa4e8b..89496744f3 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/util/TimePeriod.java
@@ -52,7 +52,7 @@ import static java.util.Objects.requireNonNull;
* <p>
* Compared to {@link Period java.time.Period}, this class has a smaller range
* ('only' supporting a little less than 358 million years), and cannot support
- * negative time periods.
+ * negative periods.
* </p>
*
* <p>
@@ -82,9 +82,9 @@ import static java.util.Objects.requireNonNull;
* </tr>
* <tr>
* <td>Time range (approx.)</td>
- * <td>0 - 49 days</td>
+ * <td>0 &endash; 49 days</td>
* <td>unsupported</td>
- * <td>-68 - 68 years</td>
+ * <td>-68 &endash; 68 years</td>
* </tr>
* <tr>
* <td>Date range (approx.)</td>
@@ -95,7 +95,7 @@ import static java.util.Objects.requireNonNull;
* </table>
*
* @see <a href=
- * "https://avro.apache.org/docs/1.11.1/specification/#duration">Avro 1.11
+ * "https://avro.apache.org/docs/current/specification/#duration">Avro
* specification on duration</a>
*/
public final class TimePeriod implements TemporalAmount, Serializable {
diff --git a/lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java
b/lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java
index 733997db28..61cc03a94c 100644
--- a/lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java
+++ b/lang/java/avro/src/test/java/org/apache/avro/TestLogicalType.java
@@ -215,7 +215,7 @@ public class TestLogicalType {
@Test
void durationExtendsFixed12() {
Schema durationSchema =
LogicalTypes.duration().addToSchema(Schema.createFixed("f", null, null, 12));
- assertEquals(LogicalTypes.duration(), durationSchema.getLogicalType());
+ assertEquals(LogicalTypes.duration(),
LogicalTypes.fromSchema(durationSchema));
assertThrows("Duration requires a fixed(12)",
IllegalArgumentException.class,
"Duration can only be used with an underlying fixed type of size 12.",