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 6a894f05104..d5b246b4b7d 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 @@ private static LogicalType fromSchemaImpl(Schema schema, boolean throwErrors) {
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 a1f7fa4e8b5..89496744f30 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 @@
*
* 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.
*
*
*
@@ -82,9 +82,9 @@
*
*
* | Time range (approx.) |
- * 0 - 49 days |
+ * 0 &endash; 49 days |
* unsupported |
- * -68 - 68 years |
+ * -68 &endash; 68 years |
*
*
* | Date range (approx.) |
@@ -95,7 +95,7 @@
*
*
* @see Avro 1.11
+ * "https://avro.apache.org/docs/current/specification/#duration">Avro
* specification on duration
*/
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 733997db28f..61cc03a94c8 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 @@ void uuidExtendsString() {
@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.",